|
аллокация вектора
|
|||
---|---|---|---|
#18+
потестировал простой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
тут вопрос: а куда делась страшилка про то, что вектор, которому сразу не выдали 1000 эл-тов, будет сначала рожать 2, потом 4, 8, 16, ... ,1024 через delete + new... где оно?? компилировал так: g++ -ggdb3 main.cpp gdb a.out (gdb) start (gdb) disas у варианта 3 asm такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
у двух других они длиннее... зы: я правильно угадал, что <+138> это такты? зыы: gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 22:16 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухзы: я правильно угадал, что <+138> это такты? Нет, адресное смещение. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 22:25 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Путаешь слова, в листинге же д.б. длина команды в байтах. А такты - я нынче не знаю, насколько это пропорционально байтам команды. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 22:25 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
ну тогда, я так понимаю, эффективность надо высчитывать по инструкциям? по ним там вроде как тоже не особо разницу видно... вот вар1 (.reserve()): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
какой эффективнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 23:07 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухпотестировал простой код: тут вопрос: а куда делась страшилка про то, что вектор, которому сразу не выдали 1000 эл-тов, будет сначала рожать 2, потом 4, 8, 16, ... ,1024 через delete + new... где оно?? оно здесь прячется. Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 23:57 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухя так понимаю, эффективность надо высчитывать по инструкциям? Это бесполезно. Современные процессора могут много странных гитик и "идеальный ассемблер" на них тормозит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 00:08 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухну тогда, я так понимаю, эффективность надо высчитывать по инструкциям? Забавная методика. А как быть с циклами и ветвлениями? Код может многократно выполняться или вообще не выполняться. Перевыделение памяти происходит внутри push_back() как уже выше заметили 21983365 . При этом выполняется копирование текущего массива, т.е. в первый раз 2 элемента, во второй 4, затем 8, 16, ... В твоем случае при 1000 элементов будут скопированы 2+4+8+...512=1022 элемента. Для int это относительно быстро, но замени int на какой-нибудь объект, у которого еще надо конструктор копирования и деструктор вызвать, и получишь более ощутимые тормоза. Для замера надо время засекать и элементов побольше взять, например, миллион. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 06:17 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Dima TДля замера надо время засекать и элементов побольше взять, например, миллион. Или написать класс с журналированием конструирования и разрушения, поместить его в вектор заместо инта и посмотреть что именно происходит ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 09:34 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Надо смотреть что под капотом ::push_back. Там не обязательно удвоение. Может быть умножение на полтора. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 10:16 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
blonduserполудухпотестировал простой код: тут вопрос: а куда делась страшилка про то, что вектор, которому сразу не выдали 1000 эл-тов, будет сначала рожать 2, потом 4, 8, 16, ... ,1024 через delete + new... где оно?? оно здесь прячется. Код: plaintext 1.
хмм, так оно и в варианте с .reserve() есть... почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 11:42 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух, попробуй в код вставить Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 12:03 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух тут вопрос: а куда делась страшилка про то, что вектор, которому сразу не выдали 1000 эл-тов, будет сначала рожать 2, потом 4, 8, 16, ... ,1024 через delete + new... где оно?? Так ты же сделал reserve, как раз это и обошёл. Убери reserve, и поменяй 1000 на 100000 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 12:07 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудуххмм, так оно и в варианте с .reserve() есть... почему? Потому что ты ее вызываешь Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 12:10 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух, Ну и да, ёмкость увеличивается не на 1 элемент за каждый push_back(), а скачками, в два раза или что-то такое. Как именно -- не специфицированно. Ты можешь совсем ухудшить ситуацию, вызывая каждый раз после push_back() метод shrink_to_fit(), который уменьшает ёмкость до минимально необходимой, правда, не гарантировано. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 12:12 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
1000 довольно слабенький объем, чтобы в отладчике увидеть разницу в потреблении памяти приложения. Попробуйте миллионов сто хотя бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 13:05 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Во времена пентиумов, когда оперативная память уже достигла гигабайта, был забавный пример. Аллоцировать двумерный массив 1000_000х3 элемента было невозможно, не хватало памяти. Память аллоцировалась нелинейно, а блоками по 512 байт (по крайней мере на моей машине), поэтому не дойдя до конца вываливалась с нехваткой памяти. Это больше имеет отношение к ленивой аллокации виртуальной памяти чем к пентиумам. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 13:09 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
maytonНадо смотреть что под капотом ::push_back. Там не обязательно удвоение. Может быть умножение на полтора. :) В MSVS 2017 - увеличивается экспоненциально, всякий раз на половину предыдущей емкости. Но только если есть такая возможность! Иначе - увеличивается на столько, сколько запрошено. У GCC - вроде бы все еще в 2 раза. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 14:00 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
MasterZivполудухтут вопрос: а куда делась страшилка про то, что вектор, которому сразу не выдали 1000 эл-тов, будет сначала рожать 2, потом 4, 8, 16, ... ,1024 через delete + new... где оно?? Так ты же сделал reserve, как раз это и обошёл. Убери reserve, и поменяй 1000 на 100000 .reserve() только в 1м варианте. В 3м как раз без ничего: vector<int> v; MasterZivполудух, Ну и да, ёмкость увеличивается не на 1 элемент за каждый push_back(), а скачками, в два раза или что-то такое. и про это я написал тоже. Dima Tполудуххмм, так оно и в варианте с .reserve() есть... почему? Потому что ты ее вызываешь Код: plaintext 1. 2.
значит та строчка в асме не про то что я спрашивал я не про .push_back() спрашивал, а "где именно происходит расширение вектора *2/*4/*8 итд, когда вектор изначально инициализирован БЕЗ размера" ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 15:22 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
и это расширение ведь должно быть видно и на 1000, зачем 1000000... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 15:23 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухзначит та строчка в асме не про то что я спрашивал я не про .push_back() спрашивал, а "где именно происходит расширение вектора *2/*4/*8 итд, когда вектор изначально инициализирован БЕЗ размера" Та строчка асма за кадром осталась, ты ее код не привел. Команда call - это вызов подпрограммы. Конкретно именно в той подпрограмме (push_back()) происходит реаллокация (при необходимости). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 15:26 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
какой код не привёл? сырцы же там в начале так страшилка в том, что БЕЗ инициализации с размером этот .push_back() должен в цикле расширять вектор постепенно в 2 раза (*2 *4 *8 *16 ... *1024), чем сильно тормозит процесс вот его я и не вижу в асме вы говорите "вот он" а потом "это не он", а push_back() ну инструкции то по самому расширению где?? Где delete + new и прочие телодвижения? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 15:31 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
может gdb не всё показал... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 15:32 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
"objdump -d" показывает очень сильно больше асма... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 15:33 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухкакой код не привёл? сырцы же там в начале Это только main(), а остальное? Код push_back() начинается с адреса 0x555555554ccc PS Фигней занимаешься. Код там есть, и в нем все вызовы new/delete есть. От вызова reserve() зависит как часто будет тот код вызываться. Тот код как минимум один раз отрабатывает внутри reserve() ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 15:41 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
"остальное" это сырцы вектора? я не понял, в вышеприведённом асме есть вызовы new/delete в итерации *2 *2 *2 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 16:41 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух"остальное" это сырцы вектора? Да. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 16:42 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
так они из стандартной библиотеки доступны каждому в /usr/include/c++ ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 17:46 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухдоступны каждому в /usr/include/c++ Вот именно. То есть тебе они тоже доступны и ты легко можешь их посмотреть. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 17:56 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
ещё раз вопрос: полудухтак страшилка в том, что БЕЗ инициализации с размером этот .push_back() должен в цикле расширять вектор постепенно в 2 раза (*2 *4 *8 *16 ... *1024), чем сильно тормозит процесс вот его я и не вижу в асме вы говорите "вот он" а потом "это не он", а push_back() ну инструкции то по самому расширению где?? Где delete + new и прочие телодвижения? если бы я был таким прошаренным в C++, чтобы самому всё расковырять и разобрать асм, я бы тут не спрашивал Поэтому я пришёл на форум за помощью к экспертам, но по сути вы только усугубили путаницу, а конкретики нет. Походу вы и сами не такие уж прошаренные в C++. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 18:23 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух, ты изначально взял неверный вектор. Зачем нужно было идти в ассемблер? Ставки были подняты. Просто если ты задаешь вопрос по вектору - надо просто и честно задавать вопрос. И не писать собственных домыслов типа "такты" ... Да это так. Субъективно. Надеюсь не обидел. Если что - извини. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 18:29 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухещё раз вопрос: полудухтак страшилка в том, что БЕЗ инициализации с размером этот .push_back() должен в цикле расширять вектор постепенно в 2 раза (*2 *4 *8 *16 ... *1024), чем сильно тормозит процесс вот его я и не вижу в асме вы говорите "вот он" а потом "это не он", а push_back() ну инструкции то по самому расширению где?? Где delete + new и прочие телодвижения? если бы я был таким прошаренным в C++, чтобы самому всё расковырять и разобрать асм, я бы тут не спрашивал Поэтому я пришёл на форум за помощью к экспертам, но по сути вы только усугубили путаницу, а конкретики нет. Походу вы и сами не такие уж прошаренные в C++. Дурак задаст вопрос так что не ответит ни один мудрец (с) Народная мудрость ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 20:22 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух расковырять и разобрать асм Для С/С++ программера это лишнее, т.к. асм-код генерит компилятор и сделать лучше него очень-очень сложно. Уровень компиляторов нынче таков что изучать ассемблер просто невыгодно, можно писать на С/С++ и получать максимальную производительность. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 20:29 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Dima T, а тебя не затруднит съ*бать из моей темы и больше в мои темы не заходить? спасибо. maytonполудух, ты изначально взял неверный вектор. Зачем нужно было идти в ассемблер? Ставки были подняты. Просто если ты задаешь вопрос по вектору - надо просто и честно задавать вопрос. И не писать собственных домыслов типа "такты" ... ну вот, в итоге уже двое-трое с темы асма срулили официально т.е. вы тему асма не тащите, а виноват я такты тут не причём (я про них вообще-то отдельно уточнил) А свой вопрос я "просто и честно" обозначил сразу (а потом ещё 2 раза обозначил) - хочу увидеть, где там эта страшилка и единственный способ её увидеть это асм (как ещё то?!) вот окажется, например, что эти ваши "умные компиляторы" умные, только если вектор обозначен прямо рядом с циклом, а если в другом конце программы, то уже и не умные вовсе... Так ведь никто так и не ответил - "умный он рядом с циклом" или это асм "не тот". Полухин, например, говорит, что нет не умные... По 40000 постов набрали и всё мало им, лопнете же скоро У меня интерес к теме отладки, а к пустому флуду интереса нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 23:37 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух, ты совсем не понимаешь, что ли? Код: plaintext 1.
Где ты тут увидишь работу аллокатора, если у тебя адреса только по 0x0000555555554bfa, а обращение к 0x555555554ccc идет. Вот тут 21983854 все, а ты зачем-то в asm полез. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 00:40 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухА свой вопрос я "просто и честно" обозначил сразу (а потом ещё 2 раза обозначил) - хочу увидеть, где там эта страшилка и единственный способ её увидеть это асм (как ещё то?!) С чего вдруг асм наше всё? В асм лезть надо в одном случае - чтобы найти косяк в компиляторе. Для остальных целей достаточно исходников на С++. Исходник std::vector сам найдешь? PS Удачи, постараюсь запомнить что тебе писать не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 06:14 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухУ меня интерес к теме отладки, а к пустому флуду интереса нет. Это называется - перехитрил сам себя. Ты в одном вопросе - протащил сразу несколько вопросов. На будуще. Если хочешь четкого ответа по теме. Давай сорц. И один вопрос. У тебя был вопрос? Вопрос. И Свои домыслы. И зачем-то дамп ассемблера. И Отладчик. Зачем? Вопрос был в С++!! По конкретной С++-ной библиотеке STD! Вот самое верное решение сейчас будет - закрыть модераторм этот топик и тебе задать одельно другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 10:35 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Dima Tт.к. асм-код генерит компилятор и сделать лучше него очень-очень сложно.Оптимизировать одну строчку си-кода асмом сложно. Но оптимизировать всю программу - все бывает. "пишите программы просто", и никакая оптимизация не потребуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:09 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Aklin"пишите программы просто", и никакая оптимизация не потребуется. насколько просто? Может и от метапрограммирования откажемся, оно сложное... То что "компилятору проще оптимизировать простой код" это я знаю. А у меня что, сложный код в первом сообщении? ёёёёёты совсем не понимаешь, что ли? Код: plaintext 1.
Где ты тут увидишь работу аллокатора, если у тебя адреса только по 0x0000555555554bfa, а обращение к 0x555555554ccc идет. ахаха, да если бы я это мог читать как книгу и сразу всё понимать, полез бы я сюда? прикинь, да, я сейчас нахожусь где-то там, где ты был лет 5 назад и тоже не одуплял, зачем callq между двух hex-ов стоит и кто вообще такой callq maytonУ тебя был вопрос? Вопрос. И Свои домыслы. И зачем-то дамп ассемблера. И Отладчик. Зачем? ну мне то позволительно, я же учусь затем, что асм не обманет. но я понял, что если есть сырцы, то проще залезть в сырцы, они тоже не обманут (главный посыл этой темы) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:54 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухAklin"пишите программы просто", и никакая оптимизация не потребуется. насколько просто? Может и от метапрограммирования откажемся, оно сложное... То что "компилятору проще оптимизировать простой код" это я знаю. А у меня что, сложный код в первом сообщении? ёёёёёты совсем не понимаешь, что ли? Код: plaintext 1.
Где ты тут увидишь работу аллокатора, если у тебя адреса только по 0x0000555555554bfa, а обращение к 0x555555554ccc идет. ахаха, да если бы я это мог читать как книгу и сразу всё понимать, полез бы я сюда? прикинь, да, я сейчас нахожусь где-то там, где ты был лет 5 назад и тоже не одуплял, зачем callq между двух hex-ов стоит и кто вообще такой callq maytonУ тебя был вопрос? Вопрос. И Свои домыслы. И зачем-то дамп ассемблера. И Отладчик. Зачем? ну мне то позволительно, я же учусь затем, что асм не обманет. но я понял, что если есть сырцы, то проще залезть в сырцы, они тоже не обманут (главный посыл этой темы) Товарищ. Я когда-то на асм собаку съел, один раз даже BIOS для компухтера написал. Так вот. Я дико рад, что мне это знание абсолютно не нужно. Я могу посмотреть, что там генерится, но не смотрю. Ну не нужно мне оно. Я понимаю, что тебе может быть интересно. Ну ты купи книжечку по асму, да разбирайся, там все в миллион раз проще, чем в С++. Но зачем через задний проход лезть? С++ для того и используют, чтобы без асма обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 14:16 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухзатем, что асм не обманет. но я понял, что если есть сырцы, то проще залезть в сырцы, они тоже не обманут (главный посыл этой темы) Офигеть ты реверс-инжинер. А если-бы целевая платформа была ARM или Cortex? Там - другой ассемблер. Ты-бы тоже изучал другой ассемблер чтоб понять про то как работает прикладная библиотека std? Почитай кстати про LLVM просто для расширения кругозора. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 14:49 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухзы: я правильно угадал, что <+138> это такты?Нет, это сколько тебе заплатят $, если ты дочитаешь до этой строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 15:42 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
maytonполудухзатем, что асм не обманет. но я понял, что если есть сырцы, то проще залезть в сырцы, они тоже не обманут (главный посыл этой темы) Офигеть ты реверс-инжинер. А если-бы целевая платформа была ARM или Cortex? Там - другой ассемблер. Ты-бы тоже изучал другой ассемблер чтоб понять про то как работает прикладная библиотека std? Почитай кстати про LLVM просто для расширения кругозора. хакеры то как то выживают же, не? на ютубе кстати много кто асм расчехляет, интересно послушать, сколько они оттуда достать могут но, повторюсь, ваши посылы в сырцы я уже усвоил ёёёёёТоварищ. Я когда-то на асм собаку съел, один раз даже BIOS для компухтера написал. да ты СТРАШНЫЙ человек! ёёёёёЯ могу посмотреть, что там генерится, но не смотрю. Ну не нужно мне оно. а процесс профилирования то у тебя в разработке присутствует? кэш-промахи, туда-сюда... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:47 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудуха процесс профилирования то у тебя в разработке присутствует? кэш-промахи, туда-сюда... Ну... расскажи что ты делаешь при кеш-промахах? И самый главный вопрос. Какая предметная область? Какому бизнесу захотелось эти промахи считать? Нет я не против что эта тема реально существует. Просто мне интересно кто это заказывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:50 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудуххакеры то как то выживают же, не? на ютубе кстати много кто асм расчехляет "Не смотрите голливудских фильмов перед обедом." почти (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:00 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух... ёёёёёЯ могу посмотреть, что там генерится, но не смотрю. Ну не нужно мне оно. а процесс профилирования то у тебя в разработке присутствует? кэш-промахи, туда-сюда... Для каких таких "кэш-промахов" нужен ассемблерный код. Расскажи. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:00 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
мне никто ничего не заказывает, я не наёмный кодер я создаю для своего бизнеса, а само программирование мне интересно сразу по нескольким причинам: - помогает выжить в современном мире; - позволяет решать любые рутинные задачи (там ещё и микро-электроника рядом); - мозги упорядочивает (если перефразировать Ломоносова: "Математику уже затем учить надо, что она ум в порядок приводит", то программирование это "next level"); - с ним легче изучать клетку. зы: при кэш-промахах я зову маму. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:01 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovполудуххакеры то как то выживают же, не? на ютубе кстати много кто асм расчехляет "Не смотрите голливудских фильмов перед обедом." почти (с) Расчехляют те у кого нет сорцов. У кого есть сорцы - зарабатывают деньги нормальным способом. И излишек на виски и баб еще остаётся. Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:02 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух....а процесс профилирования то у тебя в разработке присутствует? кэш-промахи, туда-сюда... За этим копать сюда Intel VTune ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:38 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухА у меня что, сложный код в первом сообщении?стл, хотя и удобный (да и то с оговорками), но не шибко идеальный код. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 19:10 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Автор ты почитал про LLVM ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 10:07 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
предлагаешь мне новый язык изучать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 11:11 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухпредлагаешь мне новый язык изучать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Ты воспринимаешь только то, что тебе хочется? Почему ты просто C++ - исходники stl не изучаешь, к чему эти движения в сторону ассемблера? Я же привел код из stl, где вычисляется размер увеличения: 21983854 . ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 11:37 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудух, я имел в виду что мир усложняется. И классическая схема компилляции как в Паскале сорц=>екзешник уже не работает. Компилляторы двигаются к много-уровневой компилляции. Где будет много промежуточных фаз. Или будут архитектуры вообще не похожие на Intel. Нужно ли изучать asm x86? Я лично считаю что можно. Для расширения кругозора. И просто for fun. Я сам этим грешен. Но к анализу проблемы резервирования памяти std::vector это не имеет отношения. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 12:45 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
ёёёёё, это ты к чему вообще написал? У тебя mayton в игноре чтоли я исходники (не только STL) изучал, изучаю и буду изучать - это всё процесс обучения а ещё видео с конф регулярно смотрю вот вчера/сегодня эти, например: ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 13:17 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
кстати, как вы относитесь к метапрограммированию? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 13:17 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
К мета-программированию в С++ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 17:17 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
Core Guidelines, T.120: Use template metaprogramming only when you really need to хмм... почему-то я думал, что вычисления в compile-time тесно связаны с шаблонами ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:20 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухага Его можно рассматривать как составное из препроцессора (макропроцессора) и из процессора шаблонов. С первым как-бы всё ясно. А со вторым есть смешанные чувства. Как от восторга так и до ненависти. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:25 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
полудухCore Guidelines, T.120: Use template metaprogramming only when you really need to хмм... почему-то я думал, что вычисления в compile-time тесно связаны с шаблонами а не, всё ок авторTemplate metaprogramming is hard to get right, slows down compilation, and is often very hard to maintain. However, there are real-world examples where template metaprogramming provides better performance than any alternative short of expert-level assembly code. Also, there are real-world examples where template metaprogramming expresses the fundamental ideas better than run-time code. For example, if you really need AST manipulation at compile time (e.g., for optional matrix operation folding) there may be no other way in C++. авторT.121: Use template metaprogramming primarily to emulate concepts Reason: Until concepts become generally available, we need to emulate them using TMP. Use cases that require concepts (e.g. overloading based on concepts) are among the most common (and simple) uses of TMP. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:36 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
maytonЕго можно рассматривать как составное из препроцессора (макропроцессора) и из процессора шаблонов. Что, в общем-то то же самое, только встроенное в первую фазу компиляции. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:38 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
К сожалению нам выгодно скорее разделять, чем объединять эти фазы. Особенно при анализе проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 20:51 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
какую библиотеку вы бы посоветовали в кач-ве образца кода для большого проекта (десятки тысяч строк)? типа, "вот так надо писать, чтобы и эффективно, и сопровождать было изи" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 00:15 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
glibc. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 00:29 |
|
аллокация вектора
|
|||
---|---|---|---|
#18+
насколько я понял, оптимально это брать за образец любой модуль аля vector и разбивать программу на такие же модули ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 05:44 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017561]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 423ms |
0 / 0 |