Questions tagged «optimization»

优化是改进方法或设计的行为。在编程中,优化通常采取提高算法速度或减少所需资源的形式。优化的另一个含义是机器学习中使用的数值优化算法。



4
为什么JVM仍然不支持尾调用优化?
在进行了-jvm-prevent-tail-call-optimizations之后的两年,似乎有一个原型 实现,并且MLVM一段时间以来将该功能列为“ proto 80%”。 Sun / Oracle方面对支持尾部调用是否没有积极的兴趣,或者仅仅是JVM提到尾部调用“ 注定要在每个功能优先级列表上排在第二位 ”。语言峰会? 如果有人测试了MLVM构建并可以分享其运行效果的印象(如果有的话),我将非常感兴趣。 更新: 请注意,某些虚拟机(如Avian)支持正确的尾部调用,而没有任何问题。

10
获取数字的类似于excel的列名的算法
我正在处理一个生成一些Excel文档的脚本,我需要将一个数字转换为其等效的列名。例如: 1 => A 2 => B 27 => AA 28 => AB 14558 => UMX 我已经写了一个算法来做到这一点,但是我想知道是更简单还是更快的方法: function numberToColumnName($number){ $abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $abc_len = strlen($abc); $result_len = 1; // how much characters the column's name will have $pow = 0; while( ( $pow += pow($abc_len, $result_len) ) < $number ){ …


9
将方法声明为静态有什么好处
我最近一直在浏览Eclipse中的警告并遇到以下警告: 如果该方法可以声明为静态方法,则会向编译器发出警告。 [edit] Eclipse帮助中的确切引号,重点是私有和最终的: 启用后,编译器将为私有或最终方法(仅引用静态成员)发出错误或警告。 是的,我知道我可以将其关闭,但是我想知道打开它的原因吗? 为什么将每个方法都声明为静态是一件好事? 这会给性能带来任何好处吗?(在移动域中) 指出一种方法是静态的,我想表明您不使用任何实例变量,因此可以移至utils样式类吗? 在一天结束时,我应该只关闭“忽略”功能还是应该修复它给我的100多个警告? 您是否认为这只是多余的关键字,会使代码变得肮脏,因为编译器还是会内联这些方法?(有点像您没有声明每个变量都可以终止但可以声明)。

13
合并并缩小多个CSS / JS文件
我正在尝试通过合并和压缩CSS和JS文件来优化网站性能。考虑到我所面临的实际情况,我的问题更多是关于如何实现这一(具体)步骤的(尽管在其他开发人员中也应该是典型的)。 我的页面引用了多个CSS和JS文件,如下所示: <!-- It's easier to work on smaller files during development. Hence, the multiple CSS and JS files. --> <link type="text/css" rel="stylesheet" href="/css/main.css" /> <link type="text/css" rel="stylesheet" href="/css/secondary-1.css" /> <link type="text/css" rel="stylesheet" href="/css/secondary-2.css" /> <script type="text/javascript" src="/scripts/js/main.js"></script> <script type="text/javascript" src="/scripts/js/adapter/adapter.js"></script> <script type="text/javascript" src="/scripts/js/adapter/title-adapter.js"></script> 对于生产版本,我想将3个CSS文件合并为一个,并使用例如YUI Compressor将其最小化。但是,然后,我需要更新所有需要这3个文件的页面,以引用新近缩小的CSS。这似乎容易出错(例如,您要在许多文件中删除并添加一些行)。还有其他风险较小的方法吗?JS文件也有同样的问题。

9
什么时候循环展开仍然有用?
我一直在尝试通过循环展开来优化一些对性能至关重要的代码(一种快速排序算法,在蒙特卡洛仿真中被称为百万次)。这是我要加快的内循环: // Search for elements to swap. while(myArray[++index1] < pivot) {} while(pivot < myArray[--index2]) {} 我尝试展开为以下内容: while(true) { if(myArray[++index1] < pivot) break; if(myArray[++index1] < pivot) break; // More unrolling } while(true) { if(pivot < myArray[--index2]) break; if(pivot < myArray[--index2]) break; // More unrolling } 这绝对没有区别,所以我将其改回了可读性更好的形式。我尝试循环展开时也有类似的经历。鉴于现代硬件上分支预测器的质量,何时展开循环仍然是有用的优化?


4
降低压缩浏览器的兼容性和优于GZIP的优势
2012年2月10日更新: zOompf在这里就此主题完成了一些非常深入的研究。它胜过以下任何发现。 2010年9月11日更新: 为此在这里创建了一个测试平台 一些背景信息的GZIP和DEFLATE(zlib)的HTTP 1.1定义: “'Gzip'是gzip格式,'deflate'是zlib格式。为了避免与原始deflate压缩数据格式混淆,他们可能应该调用第二个'zlib'。HTTP1.1 RFC 2616正确指向在RFC 1950中针对“放气”传输编码的zlib规范中,有服务器和浏览器的报告错误地按照RFC 1951中的放气规范产生或期望原始放气数据,尤其是Microsoft产品。使用zlib格式进行传输编码将是更有效的方法(实际上,正是 zlib格式设计用于),由于HTTP 1.1作者不幸选择了名称,因此使用'gzip'传输编码可能更可靠。”(来源:http : //www.gzip.org/zlib/zlib_faq.html) 所以,我的问题是:如果我不使用zlib包装程序(或gzip)发送RAW压缩数据,是否有任何现代浏览器(例如IE6及更高版本,FF,Chrome,Safari等)无法理解原始压缩数据压缩数据(假设HTTP请求标头“ Accept-Encoding”包含“ deflate”)? 压缩数据将总是比GZIP小几个字节。 如果所有这些浏览器都能成功解码数据,那么发送RAW deflate而不是zlib有什么不利之处? 2010年9月11日更新: 为此在这里创建了一个测试平台


9
std :: map插入还是std :: map查找?
假设要在其中保留现有条目的地图。20%的时间,您要插入的条目是新数据。使用返回的迭代器执行std :: map :: find然后进行std :: map :: insert有好处吗?还是尝试插入然后根据迭代器是否指示记录已插入而采取行动来更快?
90 c++  optimization  stl  stdmap 

10
PHP对象与数组—迭代时的性能比较
我有大量用于神经网络的PHP对象,必须对其进行迭代并对其进行一些数学运算。我想知道在类实例上使用关联数组是否更好? 我正在处理3640对象周围的事物,并且500最重要的是要在周围的时间(最多)进行迭代,因此任何微优化都会有很大帮助。难免会更快$object['value']比做起来$object->value吗? 编辑:所以他们都是一样的。但是我想构造函数会有一些开销吗?无论哪种方式,我都不认为我想用我的漂亮的类来交换脏数组:P


3
“假设”规则到底是什么?
如标题所示, “假设”规则到底是什么? 一个典型的答案是: 允许任何和所有代码转换而不会改变程序可观察行为的规则 我们会不时地从某些实现中获得归因于该规则的行为。很多次是错误的。所以,这条规则到底是什么。该标准没有明确提及该规则的一部分或段落,那么该规则的作用范围到底是什么?对我来说,这似乎是一个灰色区域,该标准未对其进行详细定义。有人可以引用标准的参考文献来详细说明细节吗? 注意:将此标记为C和C ++,因为它与两种语言都相关。
89 c++  c  optimization  c++-faq  as-if 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.