日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

groovy 2.5.4_Java 7 vs Groovy 2.1性能比较

發布時間:2023/12/3 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 groovy 2.5.4_Java 7 vs Groovy 2.1性能比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

groovy 2.5.4

自從我與Grails上一次接觸以來,我已經有兩年沒有使用Groovy了。 我陷入(硬)核心企業Java中,但在后臺遇到了一些性能方面的問題。 我幾乎錯過了學習Spock的機會,但是幸運的是, 華沙Java用戶組幫助我擺脫了一些舊系統,恢復了正常的自我開發。 實際上,我希望Spock或Geb之類的框架能夠通過使它們更容易,更有效來改變編寫測試的方法。 這兩個框架都使用Groovy以及構建工具中的新國王– Gradle 。 看到Groovy的速度如何影響我們的日常工作,我決定仔細研究它的性能,并將其與Java 7進行比較。

我的測試環境基于Java 1.7.0_25和Groovy 2.1.6。 像往常一樣,我在1.0-beta-1版本(幾乎穩定)中使用了Caliper ,并準備了許多(我希望)具有代表性的微基準。

基于Fork / Join框架的第一個基準測試在兩種語言中應該是最相似的,因為它使用了一些本機機制。 我的測試使用一些隨機的int數據初始化了數組,然后使用框架在數組中找到最大的元素。 在Groovy中,我的計算函數如下所示:

@Override Integer compute() {def size = end - startif (size == 1) {Math.max(array[start], array[end])} else {int diff = size / 2MaxValueSeeker left = new MaxValueSeeker(array, start, start + diff)left.fork()MaxValueSeeker right = new MaxValueSeeker(array, start + diff, end)Math.max(right.compute(), left.join())} }

Java版本當然非常相似。 經過十幾分鐘的測量,我得到了非常可觀的結果:Groovy僅慢了8倍。

現在是時候在日常開發中檢查一些更現實的時候了。 為了確保JIT不會消除我的代碼(我相信他喜歡做這樣的笑話),我選擇了簡單的POJO / POGO(是的),并進行了一些簡單的操作。 我在groovy中的偽“業務邏輯”方法:

def int proceed(int reps) {List<GroovyPojo> list = new ArrayList<>()int sum = 0;reps.times {// first param is int and second is Stringlist.add(new GroovyPojo(value: it, stringValue: it))}list.each {if (Integer.parseInt(it.stringValue) == it.value) {sum += it.value}}sum }

Java版本的主要區別在于POJO構造函數中的getter和手動String boxing。 在閱讀新聞上又花了十幾分鐘的時間……這次,Groovy僅慢了7倍

最后的測試應具有壓力,并在更復雜的計算中檢查兩種語言。 我下定決心,選擇了快速排序算法。 循環很少,如果if語句不起作用。 我不會在這里復制粘貼它,因為這是眾所周知的解決方案。 值得一提的是計時結果,幾乎是Groovy的5倍! 但是我已經進行了一些谷歌搜索,并注意到Groovy 2.0引入了@CompileStatic批注,這應該給我們帶來一些額外的性能提升。 因此,讓我們檢查一下……是的,通過靜態編譯,Java的優勢下降到了220%。

在下表中,您可以找到詳細的結果。 總結一下–我不確定在關鍵任務功能中使用Groovy是個好主意,但絕對是實現測試,原型設計等的絕佳解決方案。讓我強調一下,在Caliovy中編寫Caliper的結果解析器大約需要6行(解析json,迭代測量并計算平均值)

性能比較

方法 Java [ns] Groovy [ns] 因子
叉/連接 22.132 181.018 8.18
波霍斯 117.914 856.337 7.26
快速排序 68.728 330.159 4.80
使用@CompileStatic的Quicksort 67.752 147.792 2.18

參考:來自Java(B)Log博客的JCG合作伙伴 Jakub Kubrynski的Java 7 vs Groovy 2.1性能比較 。

翻譯自: https://www.javacodegeeks.com/2013/09/java-7-vs-groovy-2-1-performance-comparison.html

groovy 2.5.4

總結

以上是生活随笔為你收集整理的groovy 2.5.4_Java 7 vs Groovy 2.1性能比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。