Re[18]: Бинарная склейка
От: Qbit86 Кипр
Дата: 24.01.17 23:33
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Вот простой пример


Не наблюдаю такого в отладчике после лёгкой модифиации кода:
#include <vector>

int main()
{
    std::vector<char> chars;
    std::vector<double> doubles;

    chars.push_back(1);
    doubles.push_back(1);

    return 0;
}


    chars.push_back(1);
00CE107B  push        eax  
00CE107C  lea         ecx,[chars]  
00CE107F  mov         byte ptr [ebp-29h],1  
00CE1083  call        std::vector<char,std::allocator<char> >::emplace_back<char> (0CE12F0h)  
    doubles.push_back(1);
00CE1088  movsd       xmm0,mmword ptr [__real@3ff0000000000000 (0CE31A8h)]  
00CE1090  lea         eax,[ebp-34h]  
00CE1093  push        eax  
00CE1094  lea         ecx,[doubles]  
00CE1097  movsd       mmword ptr [ebp-34h],xmm0  
00CE109C  call        std::vector<double,std::allocator<double> >::emplace_back<double> (0CE1220h)


Q>>Что упущено; из-за чего эффект от оптимизации распухания кода незаметен?

V>Упущена стадия релизной кодогенерации конечного бинарного образа.

Подожди. Для меня как автора библиотеки полученный lib-файл — и есть конечный бинарный образ. Дальше я его поставляю прикладному программисту, а он уже линкует. И указанный lib-файл пухнет. Я не вижу тут проявления упомянутого «это позволяет бороться с распуханием кода после применения шаблонов».

То, что такая оптимизация существует, я не спорю. Только я очень скептически отношусь к тому, что она хоть сколь-нибудь заметно влияет на code bloat. В /cpp.applied как раз недавно обсуждение было на примере OpenCV, где с распуханием борятся ручным стиранием типов, не возлагая надежд на «бинарную склейку»: http://rsdn.org/forum/cpp.applied/6676361
Автор: jazzer
Дата: 24.01.17
Глаза у меня добрые, но рубашка — смирительная!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.