std::bind optimization

  • Konuyu açan Konuyu açan 0x23
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 0
  • Gösterim Gösterim 80

0x23

Yeni Üye
Üye
Mesaj
1
Beğeni
5
Puan
3
Ticaret Puanı
0
std::bind derleme ve çalışma zamanında fazladan yüktür(overhead) ve moderncpp ile artık "never use" kategorisindedir. update gibi bir fonksiyonda yapılan işlemin lambda ile değiştirmek derleyiciye optimizasyon şansı tanıyacaktır, runtime & compile time yükünü azaltacaktır, birden fazla yerde var göz gezdirdiğim kadarıyla, benzer işlemi tüm bindlara uygulamanızı öneririm. debug açısından lambdalar anonim oldukları için compilerın yazdığı closure type isimlendirmesi karmaşıktır(tamamen compilera bağlı), debug edecek olursanız buna dikkat edin(breakpoint vs gibi araçlar boşuna var edilmedi tabii).

//arat
C++:
Genişlet Daralt Kopyala
transform(m_map_pkPCChr.begin(), m_map_pkPCChr.end(), back_inserter(v), select2nd<NAME_MAP::value_type>());

// değiştir

C++:
Genişlet Daralt Kopyala
transform(m_map_pkPCChr.begin(), m_map_pkPCChr.end(), back_inserter(v), [](const auto& pair) { return pair.second; });

ufak bir simülasyon(optimizasyon flaglerinizi ekleyip farklı sonuçları simüle edebilirsiniz)


https://godbolt.org/z/E78EsTrqz
 
Geri
Üst