Julia速度极慢

我感觉很奇怪阿,julia既然以性能著称并采用Jit,为什么还要刻意去不断的优化代码呢?看前面几位大神,从函数的选择,bool的判断等等都在优化,最后才比python快了那么一点。

在QQ群里我已经给了结论了,Julia标准库里的split实现有问题,以上的所有优化都没有解决根本问题,甚至是我非常不推荐的做法。Python里的split实现没问题,所以直接使用split就可以了,不需要修改代码。解决以上字符串问题只有两个选择:

  1. 给Base提PR(已经有人提了)
  2. 自己写一个package,自己实现split

实际上从头写的Julia parser是比C++快的(所有基于JIT的parser在结构性数据上都应该比C++快,因为拿到的信息更多,可以做很多specialize),这类工程最有代表性的是JSON3(性能好于腾讯的fastjson,以及simdjson)。Python作为一个有着丰富积累的语言。字符串操作经过了充分的产品级打磨,并且也不是用Python写的,自然性能有一定保证。但是这不是说原理上就一定好。

事实上python也有它的Jit版的解释器, pypy就可以完全在不修改python代码的情况下,使其速度比cpython要快6倍以上。

别的不说,Python里写几个monkey patch的话PyPy就不能正确编译了,此外PyPy无法编译合法的Python C extension,Python C extension是Python语言的合法部分。

我本人开发的很多Julia项目都没有特意去优化,遵守好基本的style guide不要去写anti pattern (也就是不Julian的代码,Python里同样有这样的要求,尽量去写Pythonic的代码)性能就很好。

当然想要达到极致性能在什么语言里都不容易,否则做HPC和编译器的就该失业了。Julia只是允许你使用一个语言达到极致性能,而不是两个。

3 个赞