初試 Julia 語言

2021-07-04 11:18:42 字數 1001 閱讀 6353

之所以這樣說,有三個方面的理由:

作為乙個動態語言,它的 jit 編譯器(在很多情況下)還沒有智慧型到,讓我可以同時享受動態語言的便利和它的速度優勢。例如最近我在試用 julia 時最先嘗試的就是把原來用 numba 寫的函式重寫一遍,然而發現結果非常不好。julia 版本的函式執行速度相當於純 python 的速度,與 numba 版本相差三個數量級,占用的記憶體也異常地大。後來發現,最主要的原因是三層巢狀迴圈中,迴圈長度我按 python 的習慣定義為變數,而在 julia 中不變的全域性量最好宣告為常量。僅僅這個修改,讓速度提公升了兩個數量級,但還不及 numba 的速度。進一步的測試還可以通過一些細小的地方來進一步提公升速度,如這篇文章做的那樣,最終高度優化之後速度也許可以達到接近 fortran。但是,如果要這樣做,為什麼不乾脆用 fortran 呢?相比之下,numba 的可用性就要高太多了。不過畢竟它現在的穩定版本還是0.3.10,還需要再給它一點時間發展成熟。

作為乙個新興、小眾的語言,相關的工具鏈還太弱了。沒有合格的 ide,juno 在我看來現在連半成品都還算不上。包管理似乎是用的 git,有時會出一些奇怪的問題,這時候用pkg倒還不如手動去管理。除錯程式也比較痛苦,一方面是很多錯誤資訊跟沒給差不多,像我這種不熟悉的人基本只能用print一半一半地查,另一方面是相關的除錯工具也還不夠好用。

文件、相關資訊還太少。已經有不少人開始使用 julia,但網上公開的資訊中,官方的文件還比較簡陋,其他使用者貼出的部落格也很少。這導致在遇到問題的時候,很難快速地難過 google 直接得到問題的答案,而往往需要在社群中等待圈內人士的解答。

另外乙個對 julia 印象不太好的是,官網給出的 benchmark 沒有多少參考價值,至少其結果中 python 和 matlab 都很有問題,多半是單純地逐行翻譯出來的程式。這就跟我把 numba 的程式直接翻譯成 julia,然後得出結論它很慢一樣,是不公平的比較。

不管怎麼樣,julia 目前看來還是值得持續關注的,但是目前,我還不會考慮把它作為主要的計算語言。

Julia語言介紹

官網 中文社群 julia 是乙個面向科學計算的高效能動態高階程式語言。首先定位是通用程式語言,其次是高效能計算語言。2019年中,julia語言誕生於mit。2012年2月14日,發布v0.1.0版本。2018年8月8日,發布v1.0.0版本。2021年11月30日,發布v1.7.0版本。嘗試尋找...

C語言初試(一)

不知道這裡有沒有玩ikariam的啊,我倒覺得蠻不錯的。昨天晚上準備資源 科技要開二村,分配工人的時候卻苦了我。每個空閒人口提供3gold hour的金幣產量,每個木頭工人提供1building material hour的木頭產量。如果僅僅是這樣,那就沒什麼難處了。關鍵是乙個 滿意度 的設定,當時...

C語言鍊錶初試

datalink.cpp 定義控制台應用程式的入口點。include stdafx.h include typedef int data struct snode snode g phead null 煉表頭新增節點 void addhead data data 鍊錶尾新增節點。void addta...