bash.im ithappens.me zadolba.li
9991

На все руки велосипед

Вот покупаете вы стандартный велосипед. Он крут. В нём есть всё, что только может понадобится начинающему велосипедисту. Даже аккумулятор с движком, которые помогут взять слишком крутой склон. Вы влюблены в это детище прогресса и с недоумением смотрите на придурков, рассуждающих на форумах о форме и расположении дырочек в рамах, которые можно просверлить без уменьшения прочности рамы.

И вот вы несётесь со страшной скоростью, опаздывая на важную встречу, и вдруг включается тормоз, поймавший превышение скорости. С матом и руганью вы выдираете этот кусок электроники.

В следующий раз, летя по склону горы, вы видите парня, перебегающего дорогу. Вы пытаетесь повернуть руль — включается ограничение на максимальный угол поворота руля. Вы летите в пыль со своим великом.

Потом друзья зовут вас в велопоход на гору. Потея и кряхтя, вы крутите педали, пытаясь не отстать от товарищей. На привале вы с удивлением обнаруживаете, что ваш велик весит в добрых два раза больше транспортного средства друга. Вы выкидываете аккумулятор с движком, выравнивая разницу.

Да, стандартный велосипед надёжен и будет работать в любых условиях. Но вот беда: стандартный набор коллекций, к примеру, на добавление и удаление обожает использовать операторы new и delete, которые, конечно же, работают внутри критической секции. В итоге два, казалось бы, параллельных потока, работающих с двумя разными очередями, работают как один.

Простое переписывание такого прочного и надежного велосипеда на работу с большим куском памяти позволяет повысить скорость обработки данных в пять и более раз. Это не критично для клиента, но важно для сервера.