草庐IT

memory-optimization

全部标签

c# - Visual Studio 版本中 'Optimize code' 选项的好处

我们的大部分C#发布代码都是在关闭“优化代码”选项的情况下构建的。我相信这是为了让在Release模式下构建的代码更容易调试。鉴于我们正在创建连接到后端Web服务的相当简单的桌面软件(即不是一个特别占用处理器的应用程序),那么如果预期会出现任何类型的性能损失怎么办?是否有任何特定平台可能受到更严重的影响?例如。多处理器/64位。 最佳答案 您是唯一可以回答“性能影响”问题的人。尝试两种方式,衡量性能,看看会发生什么。打击可能很大,也可能不存在;没有人知道“巨大”对你来说是一微秒还是二十分钟。如果您对打开优化开关时C#编译器进行哪些优

memory - 在 Linode 512 VPS 上运行 MongoDB 的可行性?

我已阅读MongoDB文档,其中包含有关32位系统的警告;特别是Mongo的可用RAM上限为2GB。所以我想知道该声明是否意味着在低内存设置中运行MongoDB,例如Linode的512mb基于RAM的VPS。我怀疑这很重要,但使用64位发行版供以后添加资源。是否有任何警告或有人会建议在MongoDB的VPS中选择最少的RAM?我知道项目需求会影响到这一点,但我的意思是最低限度,即使没有启动MongoDB也会很可笑。 最佳答案 我在一些小型生产站点上使用它,这些站点在我的Linode512中运行,它几乎不使用任何内存,只有大约5-6

C++11 memory_order_acquire 和 memory_order_release 语义?

http://en.cppreference.com/w/cpp/atomic/memory_order和其他C++11在线引用资料,将memory_order_acquire和memory_order_release定义为:获取操作:否阅读在当前线程中可以在此加载之前重新排序。发布操作:否写道在当前线程中可以在此存储后重新排序。这似乎允许执行获取后写入之前获取操作,这对我来说也很奇怪(通常获取/释放操作语义限制所有内存操作的移动)。相同的在线资源(http://en.cppreference.com/w/cpp/atomic/atomic_flag)表明可以使用C++原子和上述宽松的

C++11 memory_order_acquire 和 memory_order_release 语义?

http://en.cppreference.com/w/cpp/atomic/memory_order和其他C++11在线引用资料,将memory_order_acquire和memory_order_release定义为:获取操作:否阅读在当前线程中可以在此加载之前重新排序。发布操作:否写道在当前线程中可以在此存储后重新排序。这似乎允许执行获取后写入之前获取操作,这对我来说也很奇怪(通常获取/释放操作语义限制所有内存操作的移动)。相同的在线资源(http://en.cppreference.com/w/cpp/atomic/atomic_flag)表明可以使用C++原子和上述宽松的

c++ - 标准 <memory> 文件中 boost::shared_ptr 和 std::shared_ptr 之间的区别

我想知道boost::shared_ptr之间是否有任何区别和std::shared_ptr在标准中找到文件。 最佳答案 std::shared_ptr是tr1::shared_ptr的C++0x形式,boost的boost::shared_ptr应该表现一样。然而,std::shared_ptr,在符合C++0x标准的实现中,应该/可能对shared_ptr类有更方便的行为,如所述在以下链接中:Differencesbetweendifferentflavoursofshared_ptrhttp://en.wikipedia.or

c++ - 标准 <memory> 文件中 boost::shared_ptr 和 std::shared_ptr 之间的区别

我想知道boost::shared_ptr之间是否有任何区别和std::shared_ptr在标准中找到文件。 最佳答案 std::shared_ptr是tr1::shared_ptr的C++0x形式,boost的boost::shared_ptr应该表现一样。然而,std::shared_ptr,在符合C++0x标准的实现中,应该/可能对shared_ptr类有更方便的行为,如所述在以下链接中:Differencesbetweendifferentflavoursofshared_ptrhttp://en.wikipedia.or

c++ 将 find() 映射到可能的 insert() : how to optimize operations?

我正在使用STLmap数据结构,此时我的代码首先调用find():如果该键以前不在map中,它会调用insert()它,否则它什么也不做。map::iteratorit;it=my_map.find(foo_obj);//1stlookupif(it==my_map.end()){my_map[foo_obj]="somevalue";//2ndlookup}else{//okdonothing.}我想知道是否有比这更好的方法,因为据我所知,在这种情况下,当我想插入一个还不存在的键时,我会在map数据结构中执行2次查找:一次对于find(),insert()中的一个(对应于operat

c++ 将 find() 映射到可能的 insert() : how to optimize operations?

我正在使用STLmap数据结构,此时我的代码首先调用find():如果该键以前不在map中,它会调用insert()它,否则它什么也不做。map::iteratorit;it=my_map.find(foo_obj);//1stlookupif(it==my_map.end()){my_map[foo_obj]="somevalue";//2ndlookup}else{//okdonothing.}我想知道是否有比这更好的方法,因为据我所知,在这种情况下,当我想插入一个还不存在的键时,我会在map数据结构中执行2次查找:一次对于find(),insert()中的一个(对应于operat

c++ - 如何在 C++ 中查看 <optimized out> 变量的值?

我正在使用gdb调试C++程序。我有这个代码:intx=floor(sqrt(3));我想查看x的值。但是,gdb声称x是“”。如何查看x的值?我应该更改我的编译器标志吗? 最佳答案 在高优化级别上,编译器可以消除中间值,正如您在此处看到的。有多种选择:您可以降低优化级别,使调试器更容易跟踪事物。-O0肯定可以工作(但会慢很多),-O1也可以正常工作。您可以添加一些显式打印语句来记录输出值。您通常也可以强制编译器通过将其设置为volatile来保留此特定值(但请记住在完成后将其取消设置为volatile!)。但是请注意,由于控制流在

c++ - 如何在 C++ 中查看 <optimized out> 变量的值?

我正在使用gdb调试C++程序。我有这个代码:intx=floor(sqrt(3));我想查看x的值。但是,gdb声称x是“”。如何查看x的值?我应该更改我的编译器标志吗? 最佳答案 在高优化级别上,编译器可以消除中间值,正如您在此处看到的。有多种选择:您可以降低优化级别,使调试器更容易跟踪事物。-O0肯定可以工作(但会慢很多),-O1也可以正常工作。您可以添加一些显式打印语句来记录输出值。您通常也可以强制编译器通过将其设置为volatile来保留此特定值(但请记住在完成后将其取消设置为volatile!)。但是请注意,由于控制流在