小编lef*_*ngs的帖子

算法的性能突然增加了~10倍

背景信息

我最近为我的班级提供了关于算法和数据结构的分类.该任务是实现一个解决方案,以找到随机生成的数组的最大子阵列.我们被要求实施强力算法和递归分治算法.

然后我们被要求分析运行时间,以查看蛮力算法的哪个问题大小将比递归解决方案更快.这是通过测量两种算法的运行时间(使用System.nanoTime()测量)来增加问题大小来完成的.

然而,确定这比我预期的要复杂一点.

好奇心

如果我通过运行问题大小为5000,超过10次的两种算法开始,递归算法的运行时间从一次运行到下一次运行下降大约10倍(从~1800μS执行,到~200μS执行)并且它在剩余的迭代中保持更快.有关示例,请参见下图

例

第2和第3列只是为了验证两种算法都返回正确的最大子数组

这是在OS X 10.7.3上使用Java 1.6.0_29测试的 - 在运行Windows 7和Java 1.6(确切版本号未知)的PC上执行时结果相同.

该程序的源代码可以在这里找到:https://gist.github.com/2274983

我的问题是:在"热身"之后,算法突然表现得更好的原因什么?

java algorithm performance-testing

13
推荐指数
1
解决办法
632
查看次数

跨Eclipse,Mercurial,Windows和Mac OS编码问题

在我的CS研究期间,我们有很多小组作业.我们使用Eclipse在Java中编程.我们(至少我试图让他们)使用Mercurial和BitBucket共享代码.我正在运行Mac OSX 10.7,而其他人正在运行Windows 7.我们在共享代码时经常遇到编码问题.æ,ø和å等丹麦人通常都是一团糟.

我们应该在我们的eclipse设置中运行什么设置以确保编码是相同的(以及首选的编码?)在Windows上,Eclipse默认为Cp1252,在MacOS上默认为MacRoman.我一直试图让每个人都使用UTF-8,但是他们之前编写的代码(在Cp1252中)不能正确显示,所以他们被迫转换很多,这通常最终导致他们默认回到Cp1252而忘记了它们将代码提交到共享存储库时.

eclipse mercurial encoding

1
推荐指数
1
解决办法
1472
查看次数