std::function의 성능이 생각보다 많이 느리다는 것을 알게 되었다.


test.cpp

ryuan@webkit:~$ g++ ./test.cpp --std=c++11 -O3 -DINTERFACE_VERSION
ryuan@webkit:~$ ./a.out
main:96] 8 elapsed
ryuan@webkit:~$ g++ ./test.cpp --std=c++11 -O3 -DINTERFACE_VERSION_NO
ryuan@webkit./a.out
main:96] 437 elapsed


못쓰겠네 -_-;

http://probablydance.com/2013/01/13/a-faster-implementation-of-stdfunction/


[Update]

Modern Effective C++ Item 5 에 따르면

std::function은 단순히 closure와 유사한 것이 아니라 모든 callable object를 담는 것으로...

추가적인 heap 메모리를 사용하는 것 같다.


위 예제를 auto로 바꿔서 테스트해봐야겠다.

저작자 표시
신고

'프로그래밍 언어 > C/C++' 카테고리의 다른 글

[읽은 글] const correctness  (0) 2016.10.18
[C++11] std::function의 성능  (0) 2015.05.29
GCC options  (0) 2013.12.05
[C++11] Range based for loop  (4) 2013.11.13
[C++11] Move semantics  (4) 2013.11.10
[c++11] rvalue reference  (1) 2013.11.07
Posted by 소혼

티스토리 툴바