[19:03:24] <vlad2> Проблема "нулевых указателей" особенно заметна на строках.
[19:03:39] <vlad2> Строка может быть и пустой и нулевой.
[19:03:55] <alexey.veselovsky> чем это от других объектов отличается?
[19:04:36] <alexey.veselovsky> это ж ничем не отличается от нуля для операции сложения/вычитания
[19:04:42] <alexey.veselovsky> и единицы для умножения/деления
[19:04:48] <vlad2> Ничем. Просто в плюсах строка может быть пукстой и все. А традиционных ЯП еще добавляется нулевость, которая применительно конкретно к строокам создает больше проблем, чеи решает.
[19:05:23] <alexey.veselovsky> э? это как? кто у нас традиционный?
[19:05:34] <vlad2> шарпы, жабы и т.д.
[19:05:45] <alexey.veselovsky> фига се традиционные :-)
[19:05:53] <vlad2> в жабскрипте оно, конечно, тоже есть - но не заметно на фоне других проблем ;)
[19:06:03] <alexey.veselovsky> алсо std::string* str = new std::string;
[19:06:04] <vlad2> А вот при переключании с С++ на шарп - очень заметно.
[19:06:16] <vlad2> std::string* нигде не ходит.
[19:06:27] <vlad2> Ходит сссылка.
[19:06:39] <alexey.veselovsky> да ладно ка :-) ты в std::map будешь строки целиком складывать, или таки указатели на них?
[19:06:46] <vlad2> А возвращается по значению.
[19:06:53] <vlad2> Конечно целиком.
[19:06:59] <vlad2> Даже задумываться не буду.
[19:07:01] <alexey.veselovsky> привет тормоза
[19:07:07] <vlad2> Нет тормозов.
[19:07:13] <vlad2> Я уже писал про это пару раз.
[19:07:22] <alexey.veselovsky> это смотря какой длины у тебя строки и смотря сколько их в этом map'e
[19:07:23] <vlad2> Тормоза везде в других местах находятся.
[19:07:29] <vlad2> А не в копировании векторов строк.
[19:07:41] <alexey.veselovsky> давеча вот в radio-t как раз подобный случай свежий из практики рассказывали
[19:08:05] <alexey.veselovsky> именно применительно к std::string засунутому в std::multi_map
[19:08:28] <vlad2> В смысле я могу представить, что оно будет тормозить в каком-то сценарии. Но свкорее всего это будут не строки, а какие-то тяжеловесные структуры. Или строке там, где должны быть стримы, например.
[19:08:31] <alexey.veselovsky> оно туда засовывалось порядка 10ти секунд. было самым узким местом в программе
[19:08:53] <alexey.veselovsky> а строк там было всего-то порядка 50 000 штук :-)
[19:09:08] <vlad2> У нас в проекте нет ни одного контейнера с указателями на строки :)
[19:09:26] <vlad2> 50000 - это слишком мало для 10 секунд.
[19:09:39] <vlad2> Реализация CMK особо долюанутая может.
[19:09:48] <vlad2> STL
[19:11:02] <alexey.veselovsky> там строки достаточно длинные были же
[19:11:14] <alexey.veselovsky> а map внутри естественно при перебалансировке дерева их копирует дополнительно
[19:11:51] <vlad2> Если они достаточно длинные - то это не строки, я ж говорю :_
[19:11:53] <vlad2> :)
[19:12:05] <vlad2> Это какие-то стримы со сторэджем на диске.
[19:12:11] <alexey.veselovsky> да ладно ка? берем банальный форумный пост - это тупо строка.
[19:12:27] <alexey.veselovsky> ну и что что строка эта 20 Кб? ;-)
[19:12:30] <vlad2> Ну и нахрена весь форум в v'g запихивать?
[19:12:41] <vlad2> map
[19:13:11] <alexey.veselovsky> ну-у.. как бэ отображение скажем номера поста/ uid'а на содержимое
[19:13:21] <alexey.veselovsky> uid - cчитай уникальный урл
[19:13:26] <vlad2> Ну хорошо. Контент-то зачем?
[19:13:30] <alexey.veselovsky> пришел тебе запрос с url;ом
[19:13:44] <alexey.veselovsky> и ты ему сразу выдаешь страничку с постом (контекстом)
[19:13:53] <alexey.veselovsky> контентом, пардон
[19:14:44] <vlad2> Не, херня все это. Даже если представить, что ты все хочешь держать в памяти, njm у тебя все равно будет один сторэдж + итераторы по нему. Никаих строрк.
[19:14:47] <alexey.veselovsky> то есть по сути - прямое отображение, где ключ - это url, а value - это что ответить
[19:15:27] <alexey.veselovsky> эдакая im memory db :-)
[19:16:05] <vlad2> Иначе std::string* тебе все равно не помогут. У тебя все равно все будет тормозить, но уже на разрушении всей этой херни (вот такие тормоза, кстати, я наблюдал и оптимизировал).
[19:16:31] <vlad2> Плюс фрагментапция памяти.
[19:16:51] <alexey.veselovsky> стоп. с чего бы тормозить?
[19:17:19] <vlad2> operator depete / free
[19:17:23] <alexey.veselovsky> откуда там будет фрагментация больше, чем при использовании как value именно std::string'ов?
[19:17:33] <alexey.veselovsky> и откуда там будет delete/free?
[19:17:48] <alexey.veselovsky> delete/free будет именно при использовании std::string как value для std::map
[19:18:04] <alexey.veselovsky> а если использовать указатели - то free вообще ни разу не вызовется
[19:18:10] <vlad2> Я говорю не про value, я говорю про то, что длинные строки в контейнере - это ошибка проектирования, и указатели на строки эту ошибку не справляют :)
[19:18:31] <alexey.veselovsky> дык их там и не будет, будет указатель :-)
[19:18:32] <vlad2> Правильный подход - один большой сторэдж + тераторы в контейнере.
[19:18:49] <alexey.veselovsky> почему указатели не исправят?
[19:19:37] <vlad2> Потому что указатели (std::string*) будут фрагшмениторвать кучу и тормозить. По сравнению с более другими структурами (итераторами по некой структуре)
[19:20:12] <alexey.veselovsky> с чего бы им фрагментировать кучу? это ж тупо число.
[19:20:40] <vlad2> Потому что кто-то будет делать new std::string. 50000 раз.
[19:21:08] <alexey.veselovsky> угу. при старте программы. один раз. при этом, заметь, ни одного delete не будет вообще
[19:21:26] <vlad2> Ну уж я не знаю при старте или как там получится :)
[19:21:48] <vlad2> Еще при закрытии тоже :) У наж С++  иделать exit(0) некошероно :)
[19:21:57] <alexey.veselovsky> чо это? ;-)
[19:22:18] <alexey.veselovsky> я нежно люблю exit(0) ;-)
[19:22:40] <vlad2> Сишник детектед ;)
[19:23:59] <alexey.veselovsky> знаешь, после того как я несколько раз сталкивался с тормозами плюсовой программы при выходе, я exit(0) таки полюбил :-)
[19:24:15] <alexey.veselovsky> понятно что он не везде и всегда применим, но если головой подумать, то бывает очень кошерненько
[19:26:53] <vlad2> Конечно, если пихать в map 50000 строк... ;)
[19:27:43] <alexey.veselovsky> да строки фигня. они все же достаточно крупные, поэтому память кончится быстрее чем элементом станет действительно МНОГО
[19:27:57] <alexey.veselovsky> а вот если списочек какой-нибудь забить целыми числами...
[19:28:13] <vlad2> Угу. Поэтому вектора рулят ;)
[19:29:29] <alexey.veselovsky> кстати, а я себе ноут заказал свежий
[19:30:15] <alexey.veselovsky> http://www.citilink.ru/catalog/computers_and_notebooks/notebooks/704541/
[19:30:18] <alexey.veselovsky> такое
[19:31:45] <vlad2> Xt-то дорогой. Суперлегкий?
[19:32:23] <alexey.veselovsky> 1.8 Кг
[19:32:57] <alexey.veselovsky> макбук ему вчистую слил по показателю цена/качество :-)
[19:33:33] <vlad2> Дык ты сравнил. Эппл и самсунг :)
[19:33:49] <alexey.veselovsky> а чо? их уже не так то просто различить :-)
[19:33:58] <alexey.veselovsky> и то и другое из люминия делаеццо
[19:34:02] <alexey.veselovsky> цвет одинаков
[19:34:24] <alexey.veselovsky> клава - почти одинакова (у этой модельки есть дополнительная клава, и это плюс)
[19:34:37] <vlad2> Эпл всегда жмотилась ;) В отличие от.
[19:34:48] <alexey.veselovsky> ну, самсунг у нас тут еще в два раза дешевле :-)
[19:35:21] <alexey.veselovsky> при этом, у всех яблочных тринашек только интеловое видео. даже у прошки ретинной
[19:35:25] <alexey.veselovsky> что пичально
[19:37:25] <alexey.veselovsky> ну, то есть я согласен за бесплатно на макбуке работать (точнее чтобы мне за него еще приплачивали), но добровольно на него деньги тратить...
[19:40:30] <vlad2> А я думал ты уже полностью продался в ражство эпплу :)
[19:41:49] <alexey.veselovsky> фигу.  отсутствие дополнительной клавиатуры.. с этим я не могу смириться!
[19:42:04] <alexey.veselovsky> то есть хрен бы с ней, с цифровой, но вот дополнительная нужны!
[19:42:16] <alexey.veselovsky> всякие там home/del/pgup/down и так далее
[19:42:36] <alexey.veselovsky> впрочем, это не отменяет того факта, что винда не нужна ;-)
[19:48:35] <alexey.veselovsky> правда она зачем-то с ноутом идет искаропки
[19:48:48] <alexey.veselovsky> придется выковыривать :-)
[19:49:20] <alexey.veselovsky> эхъ.. в юморе у нас какая-то политота пошла. пичаль
[20:18:35] <alexey.veselovsky> ня. кола лайт бессмысленна чуть более чем полностью
[20:19:09] <alexey.veselovsky> хотя нет, там хотя бы кофеин есть
[21:01:30] <vlad2> /ma запэтчил patch.exe
[21:01:40] <vlad2> /me запэтчил patch.exe
[21:03:30] <vlad2> Нет там кофеина. И на вкус мерзость :)
[21:03:51] <vlad2> Уж лучше просто колу :)
[21:04:11] <vlad2> Винду можешь мне отдать ;) Я на нетбук поставлю ;)
[21:04:34] <alexey.veselovsky> угу. но в автомате обычная кола кончилась :-(
[21:04:35] <vlad2> А то XP уже как-то некошерно.
[21:06:17] <vlad2> "согласен за бесплатно на макбуке работать" - звучит двусмысленно в свете эпловского повального анального рабства ;)
[21:15:50] <vlad2> patch тупой
[21:16:36] <alexey.veselovsky> ?
[21:51:54] <vlad2> Не умеет применить себя к слегка измененнному исходнику.