Здравствуйте, Тёмчик, Вы писали:
L>>Какие тебе еще нужны требования, если изначально было сказано, что искалась замена map'у? Тё>Так это от убогости инструментария.
Коллега, полностью согласен. Если комп не для игрулек. Мой комп 2013г скромный i7, памяти под завязку 32г. Сейчас ещё пока хватает его для моей разработки. Одна пустая виртуалка win10 крутится, но и ей я выделил 8г, чтоб могла прилагу нашу в IE загрузить. А если бы я в 2013г пожадничал памяти- сейчас бы сложно было такую найти, чтоб нарастить. Пришлось бы комп менять.
KP>Коллега, полностью согласен. Если комп не для игрулек. Мой комп 2013г скромный i7, памяти под завязку 32г. Сейчас ещё пока хватает его для моей разработки. Одна пустая виртуалка win10 крутится, но и ей я выделил 8г, чтоб могла прилагу нашу в IE загрузить. А если бы я в 2013г пожадничал памяти- сейчас бы сложно было такую найти, чтоб нарастить. Пришлось бы комп менять.
Виртуалка Win10 на 4Г тормозит
Оно и так IE11 тормозное, если ещё и памяти жмотить- совсем печаль.
давно уехал, то те кто остались теперь веб-странички с минимальным требованием в 8 Гигов памяти пишут. Блин, не думал что АйТи в АУ на столько загнило. Может быть пора вспоминать, что константа в сложности алгоритма в реальном мире может перечеркнуть все выгоды, и, о ужас для памяти сложность тоже применима, а промахи по кэшу имею значение!
давно уехал, то те кто остались теперь веб-странички с минимальным требованием в 8 Гигов памяти пишут. Блин, не думал что АйТи в АУ на столько загнило. Может быть пора вспоминать, что константа в сложности алгоритма в реальном мире может перечеркнуть все выгоды, и, о ужас для памяти сложность тоже применима, а промахи по кэшу имею значение!
Какие промахи по кэшу, спустись на землю! Когда религиозные фанатики не могут хеш от хипа отличить
Пойми, что амортизированная сложность C константа у V8 сравнима с Oracle JVM, а у той- с C++. Ибо обращение к свойствам JS обьекта в V8 происходит по смещению в памяти, там вставлен кусочек оптимизорованного C++-го кода. Специалистами Google оптимизированного, а не хайлендером, неспособным вызвать lower/upper bound ибо за 20 лет в индустрии, ниасилившего бинарный поиск.
KP>О дивный JS мир
Я не утверждал, что TS-ники в целом лучше знают алгоритмы. Я лишь утверждал, что C++ ники в целом не лучше других, и код их в целом не быстрее того же JS кода.
По IE11 не нужно судить о производительности JS- это боль.
Хотя нет, не так. Жависты в среднем знают алгоритмы и многопоточку значительно лучше плюсников. Вот теперь можешь тушить коллектор.
Здравствуйте, Lexey, Вы писали:
L>>>Ну, расскажи, как ты будешь искать отсортированный диапазон в unordered_map'е и итерироваться по нему. Тё>>Такого требования не было. Было "часто итерировать" и "иногда обращаться по ключу". Что никак не намекает на сортировку и поиск диапазона.
L>Какие тебе еще нужны требования, если изначально было сказано, что искалась замена map'у? Если ты себя позиционируешь как знаток алгоритмов, то должен, вроде, понимать, что map'ы используют там, где нужен поиск нижней/верхней границы в отсортированных данных и итерирование по диапазонам этих данных.
До введения unordered_map, было нормально использовать map в этой роли. На самом деле и сейчас нормально в целой массе случаев.
Здравствуйте, Lexey, Вы писали:
N>>До введения unordered_map, было нормально использовать map в этой роли.
L>Лет 15 назад, разве что. Не думаю, что речь идет про настолько старый код.
C++ 2011 не "Лет 15 назад," вышел,плюс ещё лет 5 индустрия догоняла.
N>>На самом деле и сейчас нормально в целой массе случаев.
L>Это ты Теме расскажи.
Тема и так твердит про убогость инструмента C++ и дремучесть отдельных представителей профессии.
Здравствуйте, Тёмчик, Вы писали:
Тё>Пойми, что амортизированная сложность C константа у V8 сравнима с Oracle JVM, а у той- с C++. Ибо обращение к свойствам JS обьекта в V8 происходит по смещению в памяти, там вставлен кусочек оптимизорованного C++-го кода. Специалистами Google оптимизированного, а не хайлендером, неспособным вызвать lower/upper bound ибо за 20 лет в индустрии, ниасилившего бинарный поиск.
Я что ты там принимаешь, но JS заметно медленнее даже на тупых синтетических задачах.
Тё>Хотя нет, не так. Жависты в среднем знают алгоритмы и многопоточку значительно лучше плюсников. Вот теперь можешь тушить коллектор.
А побоку, ты пока что демонстрируешь тотальную деградацию проф.уровня, так что твое мнение в данном вопросе имеет около нулевой вес.
Ты, кстати, не задумывался на тему того, что если довольно много людей со сравнительно не плохой квалификацией говорят тебе "Тема, ты несешь бред", то вероятность того что ты несешь бред сильно не нулевая? Делюсь тайным знанием: в таких ситуациях стоит остановиться и задуматься "а не несу ли я бред".
Здравствуйте, kaa.python, Вы писали:
Тё>>Пойми, что амортизированная сложность C константа у V8 сравнима с Oracle JVM, а у той- с C++. Ибо обращение к свойствам JS обьекта в V8 происходит по смещению в памяти, там вставлен кусочек оптимизорованного C++-го кода. Специалистами Google оптимизированного, а не хайлендером, неспособным вызвать lower/upper bound ибо за 20 лет в индустрии, ниасилившего бинарный поиск.
KP>Я что ты там принимаешь, но JS заметно медленнее даже на тупых синтетических задачах.
Тё>>Хотя нет, не так. Жависты в среднем знают алгоритмы и многопоточку значительно лучше плюсников. Вот теперь можешь тушить коллектор.
KP>А побоку, ты пока что демонстрируешь тотальную деградацию проф.уровня, так что твое мнение в данном вопросе имеет около нулевой вес.
И в чём моя деградация? Что я не бегаю с безумными глазами и не твержу "С++ всех быстрее"?
KP>Ты, кстати, не задумывался на тему того, что если довольно много людей со сравнительно не плохой квалификацией говорят тебе "Тема, ты несешь бред", то вероятность того что ты несешь бред сильно не нулевая? Делюсь тайным знанием: в таких ситуациях стоит остановиться и задуматься "а не несу ли я бред".
Квалификацию этих людей можно проверить на интервью. Пока что у меня большие сомнения в квалификации не знающих алгоритмы плюсодрочеров.
Здравствуйте, Тёмчик, Вы писали:
Тё>Что я не бегаю с безумными глазами и не твержу "С++ всех быстрее"?
Покажите C++ников в этой теме, которые бы твердили "C++ всех быстрее". С ссылками и цитатами.
Тё>Квалификацию этих людей можно проверить на интервью.
Квалификация на интервью не проверяется. Происходит это уже после интервью, на испытательном сроке, и требует гораздо больше времени, чем даже многоэтапные интервью.
Тё>Пока что у меня большие сомнения в квалификации не знающих алгоритмы плюсодрочеров.
Тёмчик, еще раз: у некоторых из тех, кого вы называете "не знающими алгоритмы плюсодрочерами" в OpenSource десятки тысяч строк код. Работающего, отлаженного и задокументированного. Хотите удостоверится в своих сомнениях? Нет проблем: идете, смотрите и показываете публике откровенные косяки в коде. За любой такой найденный косяк вам только спасибо скажут.
Если уж пытаетесь кого-то осудить, то делайте это предметно. А то получается, что вам "Рабинович напел" (с)
Здравствуйте, so5team, Вы писали:
Тё>>Что я не бегаю с безумными глазами и не твержу "С++ всех быстрее"?
S>Покажите C++ников в этой теме, которые бы твердили "C++ всех быстрее". С ссылками и цитатами.
Вы сами твердили в споре про sentinel node и демонстрировали непонимание предмета. А когда я предложил решение на ёлку залезть (O(1)) и непоцарапаться (cache locality), вы перешли на оскорбления.
Тё>>Квалификацию этих людей можно проверить на интервью.
S>Квалификация на интервью не проверяется. Происходит это уже после интервью, на испытательном сроке, и требует гораздо больше времени, чем даже многоэтапные интервью.
Это только в том случае, что интервью успешно пройдено. Я вас уверяю- с вашими познаниями алгоритмов и претензиями на превосходство в профессионализме, вы бы не прошли интервью.
S>Тёмчик, еще раз: у некоторых из тех, кого вы называете "не знающими алгоритмы плюсодрочерами" в OpenSource десятки тысяч строк код.
Мне неинтересно читать ваш отлаженный код. Я уважаю ваше стремление делиться наработками, поэтому не буду искать, где бы докопаться.
Вы же, со своей стороны, продемонстрировали нежелание вести конструктивный диалог. Вы докопались к синтаксису шаблонов, в то время как синтаксис быстро забывается, но вернуться к языку я могу в любой момент. Это как кататься на велосипеде.
Когда-то я любил C++. К сожалению, тусовка C++ сейчас не та. Многие хорошие программисты ушли из этой темы, рано или поздно. Любого старого жависта посмотреть историю- найдёшь плюсника в молодости.
Здравствуйте, Lexey, Вы писали:
N>>До введения unordered_map, было нормально использовать map в этой роли. L>Лет 15 назад, разве что. Не думаю, что речь идет про настолько старый код.
Тем, кому не подходило дёргать хэшмапу из boost — только с реальным вхождением C++11 в массы, а это считай началось с 2013, а местами и сейчас не выполняется.
N>>На самом деле и сейчас нормально в целой массе случаев. L>Это ты Теме расскажи.
Я плохо слежу за столь специфическим языком треда, но вроде он что-то похожее как раз и говорит?
Здравствуйте, Тёмчик, Вы писали:
Тё>>>Что я не бегаю с безумными глазами и не твержу "С++ всех быстрее"?
S>>Покажите C++ников в этой теме, которые бы твердили "C++ всех быстрее". С ссылками и цитатами. Тё>Вы сами твердили в споре про sentinel node и демонстрировали непонимание предмета.
Если я это твердил, то вам не составит труда дать ссылку на конкретную цитату.
Тё>А когда я предложил решение на ёлку залезть (O(1)) и непоцарапаться (cache locality), вы перешли на оскорбления.
Было предложение хранить ноды в преаллоцированном векторе фиксированного размера. За такое сразу в сад. Ибо если есть возможность заранее предсказать количество подписок, то пляски с динамическими контейнерами не нужны.
Тё>Это только в том случае, что интервью успешно пройдено. Я вас уверяю- с вашими познаниями алгоритмов и претензиями на превосходство в профессионализме, вы бы не прошли интервью.
У вас не прошел бы. В этом даже никаких сомнений нет. Равно как и контора, в которой меня собеседовали бы вы, упала бы в моих глазах ниже плинтуса. Ибо просьба обратить строку от чайника, который не в курсе, какие способы представления строк встречаются в природе, она о многом говорит. О многом плохом, касающемся конторы.
S>>Тёмчик, еще раз: у некоторых из тех, кого вы называете "не знающими алгоритмы плюсодрочерами" в OpenSource десятки тысяч строк код. Тё>Мне неинтересно читать ваш отлаженный код.
Тогда закройте рот и не звиздите о чужой квалификации. Если вам что-то кажется, то ноги в руки и бегом в религиозное заведение. А если рот публично открываете и пытаетесь на кого-то наезжать, то потрудитесь свои наезды аргументировать.
Когда вы здесь просили отревьювить ваш код, то вам высказали предметные замечания. Из которых как раз таки ваш уровень стал понятен.
Тё>Вы докопались к синтаксису шаблонов, в то время как синтаксис быстро забывается, но вернуться к языку я могу в любой момент. Это как кататься на велосипеде.
Тёмчик, я не докапывался к синтаксису шаблонов. Я указал на то, как должны инициализироваться члены класса. И на то, что вы, не зная, как это делается должным образом, не владеете инструментом, о применимости которого делаете здесь громкие заявления. Т.е. откровенно звиздите о том, в чем не разбираетесь.
В этом камень преткновения. А не в том, что какие-то мифические сиплюспоюсники в вакууме свято верят в самый быстрый на свете C++.
А зачем ты какую-то левую реализацию выбрал, а не ту, что на странице?
Node js 11.89с
C++ g++ 8.08с
но по памяти в ~30 раз хуже!
Node js 61,216
C++ g++ 1,900
А таки память еще ресурс в ряде случаев. Твое приложение, которое только на 8 гигах стартует как бы на это намекает тебе.
Тё>И в чём моя деградация? Что я не бегаю с безумными глазами и не твержу "С++ всех быстрее"?
Ну к примеру ты забыл что память это ресурс, все проблемы пытаешь свести в КА и приложению на JS. Мир богаче сильно и разнообразнее.
Тё>Квалификацию этих людей можно проверить на интервью. Пока что у меня большие сомнения в квалификации не знающих алгоритмы плюсодрочеров.
На интервью можно проверить только то, как хорошо человек подготовился к интервью. Вроде это очевидно
Почему единственная реализация на NodeJS- правая?
KP>но по памяти в ~30 раз хуже!
KP>Node js 61,216 KP>C++ g++ 1,900
Как считали память?
KP>А таки память еще ресурс в ряде случаев. Твое приложение, которое только на 8 гигах стартует как бы на это намекает тебе.
У меня win10 тормозит на <8г ещё до старта приложения.
Тё>>И в чём моя деградация? Что я не бегаю с безумными глазами и не твержу "С++ всех быстрее"?
KP>Ну к примеру ты забыл что память это ресурс, все проблемы пытаешь свести в КА и приложению на JS. Мир богаче сильно и разнообразнее.
А ты забыл, что есть реальный мир. В этом мире, когда ты хочешь найти нужную вещь в амазоне например, ты не хочешь ставить какое-то кривое поделие на MFC, которое ещё и форточку хочет. Ты привык открывать веб сайт.
Тё>>Квалификацию этих людей можно проверить на интервью. Пока что у меня большие сомнения в квалификации не знающих алгоритмы плюсодрочеров.
KP>На интервью можно проверить только то, как хорошо человек подготовился к интервью. Вроде это очевидно
Жаль, что для тебя это очевидно. Для меня очевидно, что если человек на интервью не знает про bigO- будут проблемы с производительностью его кода.
Здравствуйте, so5team, Вы писали:
S>>>Покажите C++ников в этой теме, которые бы твердили "C++ всех быстрее". С ссылками и цитатами. Тё>>Вы сами твердили в споре про sentinel node и демонстрировали непонимание предмета.
S>Если я это твердил, то вам не составит труда дать ссылку на конкретную цитату. http://rsdn.org/forum/job/7913002.1
S>Кроме того, приведенный выше код можно считать документально зафиксированным подтверждением того, что местный Тёмчик говнокодер, неспособный в простейшие структуры данных. Ибо такая наивная реализация изъятия элемента из двусвязного списка без проверки на null значений node.prev/node.next -- это про*б сравнимый с неспособностью развернуть строку. Тёмчик, почему меня не удивляет факт того, что вы говнокодер?
Тё>>А когда я предложил решение на ёлку залезть (O(1)) и непоцарапаться (cache locality), вы перешли на оскорбления.
S>Было предложение хранить ноды в преаллоцированном векторе фиксированного размера. За такое сразу в сад. Ибо если есть возможность заранее предсказать количество подписок, то пляски с динамическими контейнерами не нужны. http://rsdn.org/forum/job/7913532.1
sentinel иницировать в конструкторе:
sentinel.next = sentinel.prev = sentinel.
Можно ещё поиграться с пре-инициализацией кэша SubscriptionNode как цикличного списка, и чтобы ObservableImpl брал Node оттуда в свой список, а при unsubscribe возвращал обратно. Будет тебе тогда cache locality и избежание динамического выделения памяти:
SubscriptionNode[2048] nodeCache;
Тё>sentinel иницировать в конструкторе:
Тё>sentinel.next = sentinel.prev = sentinel.
За такие инициализации в конструкторе в C++ со времен 1990-х по рукам бъют. Но откуда вам знать-то.
Тё>Можно ещё поиграться с пре-инициализацией кэша SubscriptionNode как цикличного списка, и чтобы ObservableImpl брал Node оттуда в свой список, а при unsubscribe возвращал обратно. Будет тебе тогда cache locality и избежание динамического выделения памяти:
Тё>
Тё>SubscriptionNode[2048] nodeCache;
Тё>
Тёмчик, да вы мало того, что зведун, так еще и архитектор-астронавт? Предложить мутную и сложную схему с большими накладными расходами и звиздеть, что это правильный дизайн.
Достаточно привёл цитат? Вы сами завели объект sentinel в теле SubscriptionStorage, а потом докопались, в оскорбительной форме "со времен 1990-х по рукам бъют" SubscriptionStorage присваивать указатель на поле из тела SubscriptionStorage.
S>просьба обратить строку от чайника, который не в курсе, какие способы представления строк встречаются в природе, она о многом говорит. О многом плохом, касающемся конторы.
In computer programming, a string is traditionally a sequence of characters
Open-ended question предполагает задать мутный вопрос, и ожидается наводящий вопрос от кандидата- например, про в каком представлении, а может даже и в какой кодировке.
Я продолжаю задавать написать функцию "перевернуть строку", но сразу с сигнатурой reverseString(char[] a): void — больше никаких open-ended.
S>>>Тёмчик, еще раз: у некоторых из тех, кого вы называете "не знающими алгоритмы плюсодрочерами" в OpenSource десятки тысяч строк код. Тё>>Мне неинтересно читать ваш отлаженный код.
S>Тогда закройте рот и не звиздите о чужой квалификации. Если вам что-то кажется, то ноги в руки и бегом в религиозное заведение. А если рот публично открываете и пытаетесь на кого-то наезжать, то потрудитесь свои наезды аргументировать.
Я не наезжаю на вас неаргументированно. Только по делу. И ваша библиотека в опен сорсе мне неактуальна. Может быть, она неплохая, я не знаю. Для меня актуальна http://reactivex.io/.
S>Когда вы здесь просили отревьювить ваш код, то вам высказали предметные замечания. Из которых как раз таки ваш уровень стал понятен.
Набросились, коршуны . Я перестал писать на C++ до введений C++ 11. Ну да, неправильно использовал emplace_back. Это страшный грех, учитывая, что этих вещей не было в моё время в C++?
S>Я указал на то, как должны инициализироваться члены класса. И на то, что вы, не зная, как это делается должным образом, не владеете инструментом, о применимости которого делаете здесь громкие заявления. Т.е. откровенно звиздите о том, в чем не разбираетесь.
Я привёл ваши цитаты выше, как вы и просили. Вы так брызжете слюной, а вот мне непонятно, что в этот раз не так-то. Нету там умных указателей и их неправильного использования. Мой код приведён как "псевдо код на доске", для объяснения. А уж вы можете его переделать с учётом вашей экспертизы в C++ 20.
S>В этом камень преткновения. А не в том, что какие-то мифические сиплюспоюсники в вакууме свято верят в самый быстрый на свете C++.
Не мифические. Вы и хайлендер- яркие представители.
Здравствуйте, Тёмчик, Вы писали:
S>>>>Покажите C++ников в этой теме, которые бы твердили "C++ всех быстрее". С ссылками и цитатами. Тё>>>Вы сами твердили в споре про sentinel node и демонстрировали непонимание предмета. S>>Если я это твердил, то вам не составит труда дать ссылку на конкретную цитату. Тё>http://rsdn.org/forum/job/7913002.1
S>>Кроме того, приведенный выше код можно считать документально зафиксированным подтверждением того, что местный Тёмчик говнокодер, неспособный в простейшие структуры данных. Ибо такая наивная реализация изъятия элемента из двусвязного списка без проверки на null значений node.prev/node.next -- это про*б сравнимый с неспособностью развернуть строку. Тёмчик, почему меня не удивляет факт того, что вы говнокодер?
Ну и где здесь хоть слово про "С++ всех быстрее"?
Тё>>>А когда я предложил решение на ёлку залезть (O(1)) и непоцарапаться (cache locality), вы перешли на оскорбления.
S>>Было предложение хранить ноды в преаллоцированном векторе фиксированного размера. За такое сразу в сад. Ибо если есть возможность заранее предсказать количество подписок, то пляски с динамическими контейнерами не нужны. Тё>http://rsdn.org/forum/job/7913532.1
Нет. Пока ни одной по теме разговора.
Тё>Вы сами завели объект sentinel в теле SubscriptionStorage
Во-первых, я ничего не заводил. Прочитайте оригинал:
У меня пока проблема в том, чтобы разобраться с предложенным вами вариантом. Т.е. понять, что это за вариант вообще.
Пока что вырисовывается приблизительно такая картина:
Вы не привели ни строчки нормального кода и мне пришлось фантазировать с ваших слов. Т.е. это мой набросок вашего решения, что вы и подтвердили:
Примерно так, только названия поменять:
Тё>а потом докопались, в оскорбительной форме "со времен 1990-х по рукам бъют" SubscriptionStorage присваивать указатель на поле из тела SubscriptionStorage.
Ну что поделать, если за такие присваивания в C++ бьют по рукам с 1990-х.
S>>просьба обратить строку от чайника, который не в курсе, какие способы представления строк встречаются в природе, она о многом говорит. О многом плохом, касающемся конторы. Тё>
Тё>In computer programming, a string is traditionally a sequence of characters
Тёмчик, "последовательность" вовсе не означает, что строка представлена в виде одного непрерывного вектора, ваш К.О.
Тё>Я продолжаю задавать написать функцию "перевернуть строку", но сразу с сигнатурой reverseString(char[] a): void — больше никаких open-ended.
Вы уже окрасили себя в те цвета, в которые... Короче, поздно отмываться.
S>>>>Тёмчик, еще раз: у некоторых из тех, кого вы называете "не знающими алгоритмы плюсодрочерами" в OpenSource десятки тысяч строк код.
Тё>Я не наезжаю на вас неаргументированно. Только по делу. И ваша библиотека в опен сорсе мне неактуальна. Может быть, она неплохая, я не знаю.
Во-первых, она не одна. Во-вторых, вопрос не про актуально ли для вас что-то. Может для вас актуально, когда вас в 40 лет со всей дури в боксерском зале по башке мутузят. Если уж вы заговорили о недостаточной квалификации собеседников, то вам прозрачно намекают на способ проверить эту самую квалификацию. Так что либо аргументы в студию, либо рот закройте.
Тё>Набросились, коршуны . Я перестал писать на C++ до введений C++ 11. Ну да, неправильно использовал emplace_back. Это страшный грех, учитывая, что этих вещей не было в моё время в C++?
Здравствуйте, Тёмчик, Вы писали:
L>>Лет 15 назад, разве что. Не думаю, что речь идет про настолько старый код. Тё>C++ 2011 не "Лет 15 назад," вышел,плюс ещё лет 5 индустрия догоняла.
Я тебе говорил уже, что в 2005-м уже точно были нужные контейнеры, хоть и не в стандарте. Те, кому нужно было, их спокойно использовали.
Тё>Тема и так твердит про убогость инструмента C++ и дремучесть отдельных представителей профессии.
Вместо этого Теме стоило бы консерваторию подправить, чтобы понимать области применимости тех или иных решений, а не тупо напирать на big-O.