摘要:介紹性能號稱可以趕得上,我很好奇的執(zhí)行速度,因為我一直用的是,所以就想把和做一下簡單的比較??偨Y從上面的比較來看,確實比快很多,不過這里只做了簡單的比較,并沒有做嚴謹?shù)臏y試,僅供參考。
1、介紹
Julia性能號稱可以趕得上c/c++,我很好奇Julia的執(zhí)行速度,因為我一直用的是Java,所以就想把Julia和Java做一下簡單的比較。
這次比較一下Julia和Java做一億次加法運算的速度。
首先我寫的Julia代碼沒做優(yōu)化,我們看一下Julia的代碼執(zhí)行:
x=0 @time for i in 1:10^8 global x+=i end
這是三次執(zhí)行的結果:大約6s的時間
6.550459 seconds (200.00 M allocations: 2.980 GiB, 18.45% gc time) 6.565272 seconds (200.00 M allocations: 2.980 GiB, 18.15% gc time) 6.382583 seconds (200.00 M allocations: 2.980 GiB, 18.37% gc time)
再看Java代碼和執(zhí)行結果:
public class Test1 { public static void main(String[] args) { long t1=System.currentTimeMillis(); long x=0; for(int i = 1; i<=100000000; i++) x+=i; long t2=System.currentTimeMillis(); System.out.println("x="+x+", duration="+(t2-t1)); } }
三次執(zhí)行結果:大約40ms
x=5000000050000000, duration=41 x=5000000050000000, duration=40 x=5000000050000000, duration=40
從上面的執(zhí)行結果看,Java明顯比Julia快很多,相差一百多倍的時間,但是這是Julia沒有優(yōu)化的代碼,下面我們看一下Julia優(yōu)化后的情況
3、Julia優(yōu)化后與Java比較我們?nèi)サ羧肿兞?,把代碼放到函數(shù)里面,然后調(diào)用函數(shù),代碼如下,:
function sumfor() x=0 for i in 1:10^8 x+=i end x end @time sumfor() @time sumfor()
下面是三次執(zhí)行的結果,由于Julia第一次執(zhí)行會做預編譯的操作,我們調(diào)用兩次方法并以第二次結果為準,
第二次執(zhí)行只用了0.002ms的時間,比Java快了很多。
0.080203 seconds (35.91 k allocations: 1.978 MiB)
0.000003 seconds (5 allocations: 176 bytes)
0.062682 seconds (35.91 k allocations: 1.978 MiB, 46.11% gc time)
0.000002 seconds (5 allocations: 176 bytes)
0.037539 seconds (35.91 k allocations: 1.978 MiB)
0.000002 seconds (5 allocations: 176 bytes)
總結: 從上面的比較來看,Julia確實比Java快很多,不過這里只做了簡單的比較,并沒有做嚴謹?shù)臏y試,僅供參考。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/77123.html
摘要:首發(fā)于接上一篇讓代碼飛起來高性能學習筆記一,繼續(xù)整理高性能學習筆記。和都只能表示特定的整數(shù)范圍,超過范圍會。通用代碼一般會用,這就有可能導致性能問題。 首發(fā)于 https://magicly.me/hpc-julia-2/ 接上一篇:讓代碼飛起來——高性能 Julia 學習筆記(一), 繼續(xù)整理高性能 Julia 學習筆記。 數(shù)字 Julia 中 Number 的 size 就跟 C ...
摘要:前面兩篇讓代碼飛起來高性能學習筆記一讓代碼飛起來高性能學習筆記二,介紹了如何寫出高性能的代碼,這篇結合我最近的項目,簡單測試對比一下各種語言用算法計算的效率。下一篇,我們就來看一下中如何利用并行進一步提高效率。 前面兩篇讓代碼飛起來——高性能 Julia 學習筆記(一) 讓代碼飛起來——高性能 Julia 學習筆記(二), 介紹了如何寫出高性能的 Julia 代碼, 這篇結合我最近的項...
摘要:本文匯總了中數(shù)款儀表盤工具,簡單比較其使用場景學習難度,挑選趁手的來玩即可。進一步學習誰是中最強開發(fā)工具誰是中最強開發(fā)工具 儀表盤 (Dashboard),可簡單的理解為一個交互式網(wǎng)頁,在其中,用戶可以不懂代碼,拖拖拽拽即可與數(shù)據(jù)交互、做數(shù)據(jù)探索建模分析、展示自己關注的結果。 ...
摘要:推薦閱讀資源庫工具應用程序精選列表中文版有哪些鮮為人知,但是很有意思的網(wǎng)站一份攻城獅筆記每天搜集上優(yōu)秀的項目一些有趣的民間故事超好用的谷歌瀏覽器油猴插件合集目錄資源文檔文章圖書會談教程更多庫工具管理數(shù)據(jù)部署桌面發(fā)展監(jiān)控應用資源文檔介紹文檔教 推薦閱讀 MongoDB 資源、庫、工具、應用程序精選列表中文版 有哪些鮮為人知,但是很有意思的網(wǎng)站? 一份攻城獅筆記 每天搜集 Github ...
摘要:而這個原型對象作為這個構造函數(shù)的一個屬性,是被其創(chuàng)建出來的所有實例共享的。 構造函數(shù)創(chuàng)建對象帶來的問題 上一篇文章介紹了JavaScript創(chuàng)建對象的幾種方法,都有各自的優(yōu)缺點。構造函數(shù)看起來好像很好,但是它也有一個問題,那就是創(chuàng)建出來的每一個實例對象的方法都是一個獨立的函數(shù),即使他們的內(nèi)容是完全相同的,這是不符合函數(shù)的代碼復用原則的,而且也不能夠統(tǒng)一的修改已被創(chuàng)建的實例的方法。 ...
閱讀 3097·2021-09-24 10:26
閱讀 3273·2021-09-23 11:54
閱讀 4688·2021-09-22 15:33
閱讀 2253·2021-09-09 09:33
閱讀 1656·2021-09-07 10:10
閱讀 960·2019-08-30 11:09
閱讀 2849·2019-08-29 17:13
閱讀 1008·2019-08-29 12:35