Questions tagged «performance»

对于与代码的度量或改进以及应用程序效率有关的问题。

9
用requestAnimationFrame控制fps?
现在看来似乎requestAnimationFrame是事实上的动画方法。在大多数情况下,它对我来说效果很好,但是现在我正在尝试制作一些画布动画,我在想:是否有任何方法可以确保它以特定的fps运行?我了解到rAF的目的是使动画始终保持平滑,并且可能冒使动画不稳定的风险,但是现在看来它以任意不同的速度运行,我想知道是否有一种方法可以打击那不知何故。 我会用,setInterval但是我想要rAF提供的优化(尤其是在标签页处于焦点时自动停止)。 如果有人想看一下我的代码,那就差不多了: animateFlash: function() { ctx_fg.clearRect(0,0,canvasWidth,canvasHeight); ctx_fg.fillStyle = 'rgba(177,39,116,1)'; ctx_fg.strokeStyle = 'none'; ctx_fg.beginPath(); for(var i in nodes) { nodes[i].drawFlash(); } ctx_fg.fill(); ctx_fg.closePath(); var instance = this; var rafID = requestAnimationFrame(function(){ instance.animateFlash(); }) var unfinishedNodes = nodes.filter(function(elem){ return elem.timer < timerMax; }); if(unfinishedNodes.length === 0) { console.log("done"); cancelAnimationFrame(rafID); instance.animate(); } …

8
调用ToList()会对性能产生影响吗?
使用时ToList(),是否需要考虑对性能的影响? 我正在编写一个查询以从目录中检索文件,该查询是: string[] imageArray = Directory.GetFiles(directory); 但是,由于我想与之合作List<>,所以我决定投入... List<string> imageList = Directory.GetFiles(directory).ToList(); 因此,在决定进行这种转换时是否应该考虑某种性能影响?或者仅在处理大量文件时才考虑?这是微不足道的转换吗?
139 c#  arrays  performance  list 

18
SQL Server选择最后N行
这是一个已知的问题,但是我发现的最佳解决方案是: SELECT TOP N * FROM MyTable ORDER BY Id DESC 我的桌子上有很多行。使用该查询不是一种可能,因为它会花费很多时间。那么如何在不使用ORDER BY的情况下选择最后N行呢? 编辑 对不起,这个重复的问题

10
如何计算Java中以整数为底的对数2?
我使用以下函数为整数计算对数基数2: public static int log2(int n){ if(n <= 0) throw new IllegalArgumentException(); return 31 - Integer.numberOfLeadingZeros(n); } 它是否具有最佳性能? 有人知道为此目的准备好了J2SE API函数吗? UPD1 对于我来说,令人惊讶的是,浮点运算似乎比整数运算要快。 UPD2 由于有评论,我将进行更详细的调查。 UPD3 我的整数算术函数比Math.log(n)/Math.log(2)快10倍。

4
“ * apply”家庭真的没有向量化吗?
因此,我们习惯对每个R的新用户说“ apply不是矢量化的,请查看Patrick Burns R Inferno Circle 4 ”,其中说(我引用): 常见的反射是在apply系列中使用功能。这不是 向量化,而是循环隐藏。apply函数的定义中包含一个for循环。lapply函数掩盖了循环,但是执行时间往往近似等于显式的for循环。 的确,快速查看apply源代码可以发现循环: grep("for", capture.output(getAnywhere("apply")), value = TRUE) ## [1] " for (i in 1L:d2) {" " else for (i in 1L:d2) {" 到目前为止还可以,但是看看lapply还是vapply实际上可以看到完全不同的图片: lapply ## function (X, FUN, ...) ## { ## FUN <- match.fun(FUN) ## if (!is.vector(X) || is.object(X)) ## …



4
Ruby Array find_first对象?
我在数组文档中缺少什么吗?我有一个数组,其中包含最多一个满足特定条件的对象。我想有效地找到那个对象。我从文档中得到的最好的主意是: candidates = my_array.select { |e| e.satisfies_condition? } found_it = candidates.first if !candidates.empty? 但是我不满意有两个原因: select即使我可以在第一次命中后保释,这也使我遍历了整个数组。 我需要一行代码(有条件)来压平候选人。 事先知道存在0或1个令人满意的对象,这两个操作都是浪费的。 我想要的是这样的: array.find_first(block) 它返回nil或该块对其求值为真的第一个对象,从而在该对象处结束遍历。 我必须自己写这个吗?Array中所有其他出色的方法都使我认为它在那里,而我只是没有看到它。
135 ruby  arrays  performance  find 

5
PHP中FOR与FOREACH的性能
首先,我了解90%的应用程序中的性能差异完全无关紧要,但是我只需要知道哪个是更快的构造即可。那... 当前网上可用的信息令人困惑。许多人都说foreach不好,但是从技术上讲应该更快,因为它假设可以简化使用迭代器编写数组遍历的过程。再次被认为是更快的迭代器,但是在PHP中显然也很慢(或者这不是PHP吗?)。我说的是数组函数:next()prev()reset()等,如果它们甚至是函数,而不是那些看起来像函数的PHP语言功能之一。 稍微缩小一点:我对以大于1的步长遍历数组并不感兴趣(也没有负步长,即反向迭代)。我对遍历任意点(长度仅为0)也不感兴趣。我也看不到有规则地操纵具有1000个以上键的数组,但是我确实看到一个数组在应用程序的逻辑中被遍历了多次!此外,对于操作,主要仅是字符串操作和回显。 以下是一些参考站点: http : //www.phpbench.com/ http://www.php.lt/benchmark/phpbench.php 我到处都能听到: foreach慢,因此for/ while快 PHP foreach复制它迭代的数组;为了更快,您需要使用参考 像这样的代码:比$key = array_keys($aHash); $size = sizeOf($key); for ($i=0; $i < $size; $i++)foreach 这是我的问题。我写了这个测试脚本:http : //pastebin.com/1ZgK07US,无论我运行脚本多少次,我都会得到如下信息: foreach 1.1438131332397 foreach (using reference) 1.2919359207153 for 1.4262869358063 foreach (hash table) 1.5696921348572 for (hash table) 2.4778981208801 简而言之: foreach比foreach参考更快 foreach 比 for foreach比for散列表快 …

13
当95%的情况下的值为0或1时,是否可以对很大的数组进行随机访问优化?
是否有可能对非常大的数组进行随机访问进行任何优化(我目前正在使用uint8_t,而我询问的是哪种更好) uint8_t MyArray[10000000]; 当数组中任意位置的值是 95%的情况下为0或1, 在4%的情况下, 占2 % 在其他1%的情况下介于3到255之间? 那么,有什么比uint8_t数组更好的东西了吗?应该尽可能快地以随机顺序遍历整个阵列,这在RAM带宽上非常繁重,因此当有多个线程同时对不同的阵列执行此操作时,当前整个RAM带宽很快就饱和了。 我问,因为实际上知道几乎所有值(除了5%之外)几乎都是0或1时,拥有如此大的数组(10 MB)感觉非常低效,所以当数组中所有值的95%实际上只需要1位而不是8位,这将使内存使用量减少近一个数量级。感觉必须要有一种内存效率更高的解决方案,该解决方案将大大减少为此所需的RAM带宽,因此也大大加快了随机访问的速度。

7
为什么编译器不能(或不能)将可预测的加法循环优化为乘法?
这是在阅读Mysticial关于该问题的绝妙答案时想到的一个问题:为什么处理排序数组比未排序数组更快? 涉及的类型的上下文: const unsigned arraySize = 32768; int data[arraySize]; long long sum = 0; 他在回答中解释说,英特尔编译器(ICC)对此进行了优化: for (int i = 0; i < 100000; ++i) for (int c = 0; c < arraySize; ++c) if (data[c] >= 128) sum += data[c]; ...变成这样的东西: for (int c = 0; c < arraySize; ++c) …

8
D与C ++相比有多快?
我喜欢D的某些功能,但是否会对运行时带来惩罚? 相比之下,我实现了一个简单的程序,该程序可以同时在C ++和D中计算许多短向量的标量积。结果令人惊讶: D:18.9 s [请参见下文了解最终运行时间] C ++:3.8 s C ++的速度真的快五倍吗,或者我在D程序中犯了一个错误? 我在最近的中等Linux桌面上使用g ++ -O3(gcc-snapshot 2011-02-19)和dmd -O(dmd 2.052)编译了C ++。在多次运行中结果可重现,标准偏差可忽略不计。 这是C ++程序: #include <iostream> #include <random> #include <chrono> #include <string> #include <vector> #include <array> typedef std::chrono::duration<long, std::ratio<1, 1000>> millisecs; template <typename _T> long time_since(std::chrono::time_point<_T>& time) { long tm = std::chrono::duration_cast<millisecs>( std::chrono::system_clock::now() - …
133 c++  performance  runtime  d 

3
Apache Spark:map与mapPartitions?
RDD map和mapPartitions方法之间有什么区别?并且flatMap表现得像map还是喜欢mapPartitions?谢谢。 (edit),即两者之间在语义上或执行上有什么区别 def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = { rdd.mapPartitions({ iter: Iterator[A] => for (i <- iter) yield fn(i) }, preservesPartitioning = true) } 和: def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = …

3
为什么迭代一小串字符串比一小串列表慢?
我在玩timeit时发现,对小字符串进行简单的列表理解要比对小字符串列表进行相同的操作花费的时间更长。有什么解释吗?时间几乎是原来的1.35倍。 >>> from timeit import timeit >>> timeit("[x for x in 'abc']") 2.0691067844831528 >>> timeit("[x for x in ['a', 'b', 'c']]") 1.5286479570345861 导致此情况的较低级别发生了什么?

10
调试与发布性能
我遇到了以下段落: “在Visual Studio中编译代码时,IDE中的“调试与发布”设置几乎对性能没有影响……生成的代码几乎相同。C#编译器实际上并没有做任何优化。C#编译器仅吐出IL…,而在运行时由JITer进行所有优化。JITer确实具有调试/发布模式,这对性能产生了巨大的影响。但这并不能阻止您运行项目的“调试”或“发布”配置,也无法阻止是否连接了调试器。” 来源在这里,播客在这里。 有人可以指导我阅读可以实际证明这一点的Microsoft文章吗? 谷歌搜索“ C#调试与发布性能 ”通常会返回结果,说“ 调试具有很大的性能优势 ”,“ 发布已优化 ”和“ 不将调试部署到生产环境 ”。

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.