更新:2009-05-29
感谢所有的建议和意见. 我使用你的建议使我的生产代码平均比几天前的最佳结果快2.5倍. 最后,我能够使java代码最快.
教训:
下面的示例代码显示了原始int的插入,但生产代码实际上存储了字符串(我的坏).当我纠正那个python执行时间从2.8秒变为9.6时.因此,在存储对象时,java实际上更快.
但它并不止于此.我一直在执行java程序,如下所示:
java -Xmx1024m SpeedTest
但是,如果您按如下方式设置初始堆大小,则会获得巨大的改进:
java -Xms1024m -Xmx1024m SpeedTest
Run Code Online (Sandbox Code Playgroud)
这个简单的更改将执行时间减少了50%以上.所以我的SpeedTest的最终结果是蟒蛇9.6秒.Java 6.5秒.
原始问题:
我有以下python代码:
import time
import sys
def main(args):
iterations = 10000000
counts = set()
startTime = time.time();
for i in range(0, iterations):
counts.add(i)
totalTime = time.time() - startTime
print 'total time =',totalTime
print len(counts)
if __name__ == "__main__":
main(sys.argv)
Run Code Online (Sandbox Code Playgroud)
它在我的机器上执行大约3.3秒,但我想让它更快,所以我决定用java编程.我认为因为java被编译并且通常被认为比python更快我会看到一些很大的回报.
这是java代码:
import java.util.*;
class SpeedTest
{
public static void main(String[] args)
{
long startTime;
long totalTime;
int iterations = 10000000;
HashSet counts = …Run Code Online (Sandbox Code Playgroud) 我有点像编程的菜鸟,但我想知道你是否用两种不同的编译语言(即java和c ++)编写两个相同的程序,并在编译后运行它们,运行时是否有所不同或者只是编译时间有什么不同?