4 ms·
This is also mis-interpretation of micro-benchmark and illustrate pretty well that benchmarking this kind of thing is difficult. If you analyze the ASM generat
by adev_ 7y ago
This is also mis-interpretation of micro-benchmark and illustrate pretty well that benchmarking this kind of thing is difficult.
If you analyze the ASM generated by the benchmark he proposed, you see something very different of what the godbolt "simple" compilation of micro-isolated function give you.
- Most call to "fill" are generally transparently replace by a "memset" call directly by the compiler in high level of optimization when done in a normal glibc/GCC linux configuration.
- It can even being removed entirely sometimes and this is also a problem ( https://www.usenix.org/system/files/conference/usenixsecurity17/sec17-yang.pdf https://www.usenix.org/system/files/conference/usenixsecurit... )
- This does not seem to occur on godbolt for ...reasons. https://godbolt.org/z/RGEXH8 https://godbolt.org/z/RGEXH8
- Enable vectorization + some compiler flags can in some case make the memset call replaced by a bunch of SIMD code depending of your compiler / compiler options and/or cpu.
- The intel compiler is (like usual) much more aggressive and replace everything by their home-made memset implementation https://godbolt.org/z/7RAYGc https://godbolt.org/z/7RAYGc