表演 – 为什么高粱比斯卡拉慢?
在这
test年,我们可以看到,高卢的表现有时比斯卡拉慢得多。在我看来,由于golang的代码直接编译为c / c兼容的二进制代码,而scala的代码被编译为JVM字节代码,所以golang应该有更好的性能,特别是在基准测试的这些计算密集型算法中。我的理解不正确吗?
http://benchmarksgame.alioth.debian.org/u64/chartvs.php?r=eNoljskRAEEIAlPCA48ozD%2Bb1dkX1UIhzELXeGcih5BqXeksDvbs8Vgi9HFr23iGiD82SgxJqRWkKNctgkMVUfwlHXnZWDkut%2BMK1nGawoYeDLlYQ8eLG1tvF91Dd8NVGm4sBfGaYo0Pok0rWQ%3D%3D&m=eNozMFFwSU1WMDIwNFYoNTNRyAMAIvoEBA%3D%3D&w=eNpLz%2FcvTk7MSQQADkoDKg%3D%3D 解决方法
我认为在四个基准测试中,我们认为这些解决方案与scala解决方案相比最慢。
> mandelbrot:scala实现的内部循环一次展开。也可能是JVM可以对这样的计算进行向量化,我认为编译器还没有完成。这是良好的手动优化加上更好的JVM支持超速算术。> regex-dna:scala实现没有做基准测试:它被要求“”“(一次一个模式)匹配 – 替换重定向文件中的模式,并记录序列长度”“”,但它是只是计算长度和打印。 go版本是匹配替换,因此更慢。> k-核苷酸:scala实现已经通过使用位加密来将核苷酸包装成长而不是使用字符进行了优化。这是一个很好的优化,也可以应用于Go代码。> binary-trees:这通过填充RAM来测试gc性能。这是真的,java gc比go g要快得多,但是对于这一点来说,这不是首要任务的一个参数是通常可以通过不产生垃圾来避免gc在真正的程序中。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |