Say*_*yan 10 algorithm parallel-processing image-processing
我打算在计算密集型算法上编写一堆程序.这些程序将作为不同编译器/硬件性能的指标.
我想要了解一些常用的算法,这些算法用于不同领域,如生物信息学,游戏,图像处理等.我想要这样做的原因是学习算法并拥有一个小的个人迷你基准套装 有用的| 易于维护.
任何关于算法选择的建议都会非常有用.
Wil*_*ill 12
处理器性能的最佳指南是:http://www.agner.org/optimize/
然后有人会把它放在一个3GB内存的盒子里,打败双通道的希望,你精心调整的基准测试将再次给出截然不同的结果.
如果您有一个性能关键代码并且您确定已经选择了获胜算法,则无法使用通用基准来确定最佳编译器.您必须使用每个编译器实际编译您的特定代码片段并使用它进行基准测试.您获得的结果虽然对您有用,但不会向其他人推断.
举个例子:制作压缩软件的人 - 比如zip和7zip以及PPM和上下文混合等东西 - 都非常注重性能并对程序进行基准测试.他们在www.encode.ru上闲逛
情况是这样的:对于开发相同基本算法的工程师 - 比如LZ或算术编码和霍夫曼等熵编码 - 工程师都发现非常不同的编译器更好.
也就是说,两个工程师使用相同的高级算法解决相同的问题,每个工程师都会对他们的实现进行基准测试,结果会推荐不同的编译器 ...
(我已经看到同样的事情在比赛编程中反复重复,例如Al Zimmermann的编程竞赛,这是一个同样注重表现的社区.)
(较新的GCC 4.x系列全面非常好,但这只是我的数据点,其他人仍然喜欢ICC)
(与IO相关的任务的平台基准完全是另一回事;人们不了解Linux,Windows和FreeBSD(以及其他)在压力下的表现有多么不同.并且基准测试在相同的工作负载,同一台机器,不同的机器或不同的核心数量 - 将提供非常一般的信息.没有足够的基准测试,可悲的是.)