Julia 語言中的生成器表示式與陣列推導式
《Julia 程式設計基礎》第 228 頁:
當然了,程式的好壞肯定不能單憑是否節省記憶體空間來衡量。如果我們觀測程式的執行時間(可以用 @timev 巨集),會發現生成器表示式通常還不如包含了陣列推導式的相應程式碼執行速度快。
我使用以下程式碼進行測試(程式碼中的“生成器表示式”和“陣列推導式”來源於書中同一頁):
function test(n)
println("\n效能測試(n = $(n))")
println("生成器表示式:")
@timev reduce(*, (x for x=1:n))
println("\n陣列推導式:")
@timev reduce(*, [x for x=1:n])
end
println("Julia Version $(VERSION)")
test(10)
test(10^8)
執行結果如下:
$ julia p228.jl
Julia Version 1.5.0
效能測試(n = 10)
生成器表示式:
0.000000 seconds
elapsed time (ns): 62
陣列推導式:
0.000014 seconds (1 allocation: 160 bytes)
elapsed time (ns): 13845
bytes allocated: 160
pool allocs: 1
效能測試(n = 100000000)
生成器表示式:
0.000000 seconds
elapsed time (ns): 50
陣列推導式:
0.335083 seconds (2 allocations: 762.940 MiB, 1.03% gc time)
elapsed time (ns): 335083357
gc time (ns): 3449954
bytes allocated: 800000080
pool allocs: 1
malloc() calls: 1
GC pauses: 1
可見,在上述程式碼中,生成器表示式比包含陣列推導式的相應程式碼執行速度快。
相關文章
- 生成器,推導式
- Go 語言中的兩種 slice 表示式Go
- 聊聊Go語言中的陣列與切片Go陣列
- 生成器 推導式 內建函式函式
- 程式語言中表示式更優於語句
- Python騷操作從列表推導和生成器表示式開始Python
- 現代 ABAP 程式語言中的正規表示式
- c語言中陣列的宣告與初始化C語言陣列
- python 生成器 和生成器函式 以及各種推導式Python函式
- 表示式與語句
- 24/9/21 python的推導式、生成器Python
- Python推導式(列表推導式、元組推導式、字典推導式和集合推導式)Python
- 認識 Go 語言中的陣列Go陣列
- python生成器和各種推導式Python
- 初識生成器與生成器表示式 Day12
- c語言中三維陣列C語言陣列
- C 語言中的 time 函式函式
- c語言中陣列的三種型別C語言陣列型別
- Python中表示式與語句Python
- shell--函式與陣列函式陣列
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- C語言中qsort函式的用法C語言函式
- c語言中計算陣列長度的方法C語言陣列
- go語言中遍歷陣列的方法有哪些Go陣列
- CMake 生成器表示式---條件表示式和邏輯運算子
- 詳解資料結構中的“陣列”與程式語言中的“陣列”的區別和聯絡資料結構陣列
- Java正規表示式的語法與示例Java
- rex:Golang的正規表示式生成器Golang
- C語言中函式printf()和函式scanf()的用法C語言函式
- C語言中陣列溢位是什麼C語言陣列
- PHP學習筆記6:表示式&多維陣列PHP筆記陣列
- 異常處理與推導式
- C語言中函式的返回值C語言函式
- dart系列之:dart語言中的函式Dart函式
- 淺談C語言中函式的使用C語言函式
- Lambda表示式基本語法與應用
- python 推導式Python
- 列表推導式