All streams
Search
Write a publication
Pull to refresh
8
0.3
OlegMax @OlegMax

User

Send message
Вы бы хоть четверостишиями эти «8 правил» изложили, если ориентируетесь на уровень средней школы.
Ок. Имхо, Валентина Терешкова — первая женщина-космонавт.
… а настоящая моя страсть — графомания!
1. Не потокобезопасно, причем существование общего кэша не очевидно из интерфейса библиотеки.
2. Указание имени модуля рядом с именем процедуры, по моим ощущуениям, не совсем C++ style — избыточный runtime overhead. Если используются несколько процедур из одного модуля, то имя модуля все равно будет задаваться переменной или константой, так почему бы эту переменную не сделать схожей с ntmodule? Таким образом убирается поиск в кэше и добавляется управление временем жизни хэндла.
Любопытно было бы заменить в этой задаче массив интов на массив структур и сортировать по одному из полей. В C++ влияние вполне предсказуемое, а вот не будет ли это катастрофой в C#? (просто предположение — я в C# вообще никак)
Когда уже они перейдут на Clang frontend? Сильная сторона Intel — оптимизация, зачем тратить ресурсы на повторение сделанного другими?
Хочу увидеть того, кто купит за 130 тыщ домен в этой нелепой зоне.
Убедительно)
Нам же платят за то, что мы пишем код, а не за то, что мы не пишем код.
Какой использовался heap manager и были ли испробованы другие реализации heap manager?
Нет, 13 секунд простоя на каждые 100 млн объектов для меня вообще не показатель. Объяснить почему или догадаешься?
Пример системы (взят с потолка): в malloc/free тратится 5% времени, из всех malloc/free 50% более-менее можно переделать на placement new/delete. Итого 2.3% экономии. И куча проблем с отладкой. «Сумасшедший прирост производительности», однако!
поставят msvcr120.dll:malloc на колени из-за мьютекса

У меня было впечатление, что CRT использует напрямую системный heap, который реализован довольно прилично в Win7. Меня TBB malloc как-то особо не впечатлил. Может для WinXP имеет смысл, так как там системный heap тупее.
Вообще-то я имел в виду сравнение чуть более комплексных задач. Например, упомянутые в статье записи SQL, где сама запись выделяется в куче, а поля — в буфере.
Но даже на таком синтетическом тесте получается интересный результат. Практически ничего (placement new) сравнивается со сложным алгоритмом (полномасштабный heap с thread safety и т.д.) и получется разница на один порядок. 10 раз, Карл!
Вот теперь читатель статьи может прикинуть, стоит ли геморрой выделки.
Вопрос по реализации: при рисовании чертежа используется какое-то аппаратное ускорение и какое? GPU, вроде, сложно заставить нормальный antialiasing делать? Вобщем, интересно, как сделана быстрая и качественная 2D графика.
А зачем быстрее? Не достаточно, чтобы было одинаково? Заодно посмотрим на «сумасшедший прирост производительности» (tm), посмеемся вместе.
Пока в статье нет сравнения производительности предложенного примера в вариантах с placement new и с достаточно современным memory manager, эта статья скорее вредна, чем полезна.
1. 9 reinterpret_cast'ов в такого рода библиотечке — это даже не C++11, это все C++100500
2. Не уверен, но похоже, что только char нормально поддерживается.
3. Почему codepoint имеет тип size_t?
4. То, что parse принимает стрим или стандартный basic_string, выглядит излишним ограничением. Почему не пара итераторов?
5. Одно из многих возможных движений в направлении hardcore C++ — сделать JSON парсер отдельным темплейтным компонентом, чтобы предложенная схема хранения могла быть заменена на более подходящую пользователю.
примером того, что современные технологии могут не только упростить жизнь, но и осложнить её

Это как? Пришли белые люди, запретили исконо-посконую теплую ламповую бенгальскую письменность и заставили пользоваться расистским юникодом и твиттером? Не нравится — создайте свой юникод с ♠ и ☃.
Всем проголосовавшим за статью будет автоматически установлен Яндекс.Браузер
Могли бы и подольше read-only доступ предоставлять — с них не убудет.

Information

Rating
2,400-th
Registered
Activity