목록2024/04/22 (1)
Visual Studio
[C++] lambda의 static 선언에 대하여
캡쳐 없는 람다의 경우 대부분의 컴파일러에서는 최적화를 해주기 때문에 static을 붙이건 붙이지 않건 동일하게 동작한다. 다만 명시적으로 한번만 선언되길 원한다면 static으로 선언한다. 캡쳐 있는 람다의 경우에는 static으로 선언한 람다가 캡쳐를 갖고 있다면 실제로 컴파일 되었을 때 non-static 함수보다 최적화의 품질이 떨어져 초기화 할때 사용하는 instruction의 개수가 non-static보다 많게 된다. 따라서 캡쳐되는 변수가 안전하고(정적이며, 스레드 세이프) 해당 람다 함수가 여러번 혹은 지속적으로 호출된다면 static으로 선언하고, 안전하지 않거나 호출 횟수가 적은 경우에는 non-static으로 선언하는 것이 좋다. 다만 캡쳐 있는 static lambda는 해당 변수가..
Computer Engineering
2024. 4. 22. 16:33