Tag: 性能

为什么差异列表比常规连接更有效?

我现在正在通过在线学习你一个haskell书籍,并且已经到了一个章节,作者正在解释一些列表连接可能是不够的:例如 ((((a ++ b) ++ c) ++ d) ++ e) ++ f 据说效率不高。 作者提出的解决scheme是使用定义为“差异列表” newtype DiffList a = DiffList {getDiffList :: [a] -> [a] } instance Monoid (DiffList a) where mempty = DiffList (\xs -> [] ++ xs) (DiffList f) `mappend` (DiffList g) = DiffList (\xs -> f (g xs)) 我很难理解为什么在某些情况下DiffList在计算上比简单的级联更有效率。 有人能够简单地向我解释为什么上面的例子效率很低,DiffList以什么方式解决了这个问题?

计算例程的速度?

什么是确定处理例程花费多长时间的最好和最准确的方法,例如函数过程? 我问,因为我目前正在试图优化我的应用程序中的几个function,当我testing的变化很难确定只是通过看它,如果有任何改进。 所以,如果我能够返回一个准确的或接近准确的时间来处理一个例程,那么对代码的更改做得如何,我会有一个更清晰的认识。 我考虑过使用GetTickCount,但我不确定这是否接近准确? 有一个可重用的函数/过程来计算一个例程的时间是非常有用的,并使用如下所示: // < prepare for calcuation of code … ExecuteSomeCode; // < code to test … // < stop calcuating code and return time it took to process 我期待听到一些build议。 谢谢。 克雷格。

分支感知编程

我正在阅读这个分支,错误预测可能是应用程序性能的一个热点瓶颈。 正如我所看到的,人们通常会显示汇编代码,揭示了这个问题,并指出程序员通常可以预测分支可以走多远的时间,避免分支错误预测。 我的问题是: 1-是否可以避免使用一些高级编程技术(即没有汇编 )的分支预测错误? 2-我应该记住用高级编程语言(我主要对C和C ++感兴趣)生成支持分支的代码? 代码示例和基准值得欢迎!

通过浏览器获取并发请求的数量

我试图找出是否值得跨多个子域传播图像请求。 [本文](链接打破)例如说: 大多数浏览器一次只能发出两个请求,所以浏览器会请求两个文件,下载它们,然后继续下一个。 越多的HTTP请求或页面要求正确显示的独立组件,用户需要等待的时间越长。 当他们说的最多 ,特别是哪些浏览器? 这个数字是否与这个问题的并发XMLHttpRequests数量有关?

什么是FLOP / s,这是一个很好的衡量performance?

我被要求测量一个fortran程序的性能,这个程序可以在多CPU系统上求解微分方程。 我的雇主坚持我测量FLOP / s(浮动操作每秒),并将结果与​​基准( LINPACK )进行比较,但我不相信这是一条路,因为没有人能向我解释FLOP是什么。 我做了一些关于FLOP的研究,得到了一些相当矛盾的答案。 我得到的最受欢迎的答案之一是“1 FLOP =加法和乘法运算”。 真的吗? 如果是这样,身体上又是什么意思呢? 无论我最终使用什么方法,它必须是可扩展的。 一些版本的代码解决了数百万未知数的系统,需要数天的时间来执行。 在我的情况下,还有哪些其他有效的衡量性能的方法(我的情况摘要是fortran代码,在几百个CPU上一遍又一遍地进行大量的算术运算)?

为什么通过一个数组迭代更快,然后转发

给定这个代码 var arr = []; for (var i = 0; i < 10000; ++i) { arr.push(1); } 前锋 for (var i = 0; i < arr.length; ++i) {; } 向后 for (var i = arr.length – 1; i >= 0; –i) {; } 硬编码转发 for (var i = 0; i < 10000; ++i) {; } […]

什么时候使用.NET BufferedStream类?

MSDN网站指出: 缓冲区是内存中用于caching数据的字节块,从而减less了对操作系统的调用次数。 缓冲区提高了读写性能。 缓冲区可以用于读取或写入,但不能同时使用。 BufferedStream的Read和Write方法自动维护缓冲区。 我应该在任何可能的场合使用这个课程吗?

在Web应用程序中使用True type字体

目前我看到很多网站使用真正的字体 。 我想知道如何在我们的应用程序中使用真正的字体,并影响页面的加载时间?

性能权衡 – 何时MATLAB比C / C ++更好/更慢?

我知道C / C ++是一种低级语言,当与其他任何高级语言进行比较时,会生成相对优化的机器码。 但是我觉得还有不止这些,从实践中也可以看出来。 当我做一些简单的计算,如高斯样本集的蒙特卡洛平均等等时,我发现C ++实现和MATLAB实现之间没有什么区别,有时实际上MATLAB在时间上performance得好一些。 当我使用数千行代码进行更大规模的模拟时,慢慢地显示出真实的图像。 C ++仿真显示出优越的性能,比时间复杂度比同等的MATLAB实现要好100倍。 C ++中的代码大部分都是串行的,没有明确的hi-fi优化。 而根据我的意识,MATLAB固有地做了很多优化。 例如,当我尝试生成大量的随机样本时,在C ++中使用像IT ++ / GSL / Boost这样的库执行相对较慢的操作(所使用的algorithm与mt19937相同)。 我的问题是简单地知道在MATLAB / C ++之间是否有一个简单的权衡。 难道就像人们所说的:“只要有可能,C / C ++就更好”(经验丰富的)。 从另一个angular度来看,“除了舒适之外,MATLAB还有什么好处呢?” 顺便说一句,在这里我没有看到编码效率参数是重要的,在这两种情况下,想到同一个程序员。 而且,我认为像Python,R这样的其他select在这里是不相关的。 但是依赖于我们使用的特定的库应该是有趣的。 [我是通信系统编码理论的博士生。 我一直在用matlab / C ++进行仿真,并且在两种情况下都有合理的编码几行10K的经验]

jQuery的animation()和浏览器的性能

我有一些非常缓慢的元素。 本质上,我减less了40秒左右的两幅图像的左边距。 在视觉上,它的工作很好。 但是,在处理animation过程中,我的处理器会跳到大约50%的使用率。 这不是特定于任何单个浏览器,在Safari3和Firefox3上都是一样的。 如果我有两个浏览器运行的页面,我的CPU尖叫大约95%的使用率。 我正在使用jQuery 1.3。 两个animation都是同时发生的。 页面上没有Flash。 如果我将代码注释掉(删除animation)并刷新页面,我的处理器将立即恢复正常使用。 我希望我不必诉诸Flash,但即使在Hulu.com上观看节目也不会像我这样使用CPU。 思考?