is not bad https://godbolt.org/g/bSfubs
On Tue, Oct 3, 2017 at 3:19 PM, SrMordred via Digitalmars-d < digitalmars-d@puremagic.com> wrote: > //D compiled with gdc 5.2 -O3 > > auto test(int[] arr, int cmp) > { > int[] r; > foreach(v ; arr) > if(v == cmp)r~=v; > return r; > } > // 51 lines of assembly > > auto test(int[] arr, int cmp) > { > return arr.filter!((v)=>v==cmp).array; > } > //1450 lines... what? > > Ok let me look also at c++: > //gcc 7.2 -O3 > > vector<int> test(vector<int>& arr, int cmp) { > vector<int> r; > for(auto v : arr) > if(v == cmp)r.push_back(v); > return r; > } > //152 lines. more than D :) > > vector<int> test(vector<int>& arr, int cmp) { > vector<int> r; > std::copy_if (arr.begin(), arr.end(), std::back_inserter(r), > [cmp](int i){return i==cmp;} ); > return r; > } > > //150 lines. That what i expected earlier with D. > > Hmm. let me be 'fair' and use std.container.array just for curiosity: > > auto test(ref Array!int arr, int cmp) > { > Array!int r; > foreach(v ; arr) > if(v == cmp)r.insert(v); > return r; > } > > //5542 lines... what?? > > Someone interested to discuss about this? > > Or point me some grotesque mistake. >