Avatar
ヤバすぎる・・・ (edited)
5:11 AM
さっきの @koher のやつを試したんだけど (edited)
5:11 AM
最適化をかけると、コンパイラーが、 lazy.map.reduce 版の実装を (edited)
5:11 AM
forループ版の実装の呼び出しに差し替える。 (edited)
😮 1
5:11 AM
define hidden swiftcc void @_T01a17testLazyMapReduceyyF() local_unnamed_addr #0 { tail call swiftcc void @_T01a11testForLoopyyFTm(<2 x i64> <i64 ptrtoint ([18 x i8]* @4 to i64), i64 17>) #0 ret void }
5:11 AM
define i32 @main(i32, i8** nocapture readnone) local_unnamed_addr #0 { entry: store <2 x i64> <i64 0, i64 10000>, <2 x i64>* bitcast (%Ts14CountableRangeVySiG* @_T01a2nss14CountableRangeVySiGv to <2 x i64>*), align 16 store i64 100000, i64* getelementptr inbounds (%TSi, %TSi* @_T01a4loopSiv, i64 0, i32 0), align 8 call swiftcc void @_T01a11testForLoopyyFTm(<2 x i64> <i64 ptrtoint ([12 x i8]* @0 to i64), i64 11>) tail call swiftcc void @_T01a13testMapReduceyyF() call swiftcc void @_T01a11testForLoopyyFTm(<2 x i64> <i64 ptrtoint ([18 x i8]* @4 to i64), i64 17>) ret i32 0 }
5:12 AM
main関数は、ループ版、mapReduce版、ループ版 の呼び出しになる。 (edited)
5:13 AM
副作用として表示される文字列が違うが、その切替のための引数が追加されてなんかうまくやっている (edited)