У меня друг несколько лет назад как раз PHP-программистов нанимал и поведал мне об ужасах... Процесс растянулся на несколько месяцев, потому что хороших кандидатов было мало. (Hо это было до кризиса, сейчас, наверное, с этим попроще.) С горем-пополам удалось нанять троих, которые в программировании вроде-как разбирались, но в процесс разработки они так и не смогли вписаться.

Один, вроде бы, писал относительно нормальный код, но принципиально отказывался его тестировать. Доходило до того, что ему уже специально писали на листе бумаги список вещей, которые обязательно нужно проверить. Он уверял что всё проверил, коммитил код -- но в итоге и его часть толком не работала (даже вещи из списка) и другие части валила.

Другому поручили сделать сделать страницу с кучей динамики на JavaScript (это не PHP, но там ситуация очень похожая), и он это, в принципе, сделал, но оформил весь код в виде одной невъебенной функции на 1000 строк, без какой-то внутренней структуры, с повторяющимися кусками кода и т.д. В общем, в лучших традициях. В итоге, когда понадобилось эту часть доработать и исправить баги, весь этот код пришлось выкинуть и писать с нуля. Да, тут, конечно, есть и вина чела, который был должен наблюдать, как свеженанятый программист пишет код.
Hо неужели нужно объяснять, что код так не пишут?

Третяя (это была девушка) имела практически нулевую производительность труда. В итоге так и не удалось выяснить, сколько кода написала именно она, а не парень, который работал в той же конторе и которому она строила глазки в рабочее время.

(Ц) фидо. Alex Mizrahi
vs - man, you really should hire an Indian for the job you've given to me. I'm getting tired from copy pasting. But I think Indians are the only persons who can perform copy pasting virtuously, it's their job

Vik- индусы - сосут!!!

Ты неправильного понимания - кто такие индусы, чувак! Индусы в ИТ - это такие Равшаны с Джамшутами, типа таджиков в строительстве. Они сцуки за компом отжиматься кажин день могут за плошку риса, вдвое больше чем ты (этот еффект известен как "чугунная жопа"). А ты так - не можешь, хе-хе.

Зато у тебя есть желание и возможность сделать хорошо.

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

Берегись индусов!

Перейдем к примерам.

Вот наши узкоглазые чудики родили копи-пейст плюгин строго по заветам Равшана и Джамшута. Им же не надо было решать реальную проблему клиента, зато оне ходят уж скоро год в кошерных гальштуках и все к тому же заказчику, с нулевым результатом.

Я как-то работал с одними мериканами, те тоже были индусами (не в смысле национальности, а в смысле отношения к работе). Так они к клиенту каждый день в галстуках ходили в течении ШЕСТИ месяцев, с результатами а-ля копипейстплюгин. И только после того, как клиент начал требовать бабло взад - на объект выехал "наш технический специалист", то есть я. Аккурат я тогда универ закончил. Нашли суки самого дешевого.

И не поверишь!!!! я там пробыл ТРИ ДНЯ и клиент стал "хэппи". Студент за три дня решил их проблему, а толпа индусов а-ля мистеры фукуты - за полгода не сделала НИ ХРЕНА.

vs - тебе выдали галстук?

Vik- Халстук? Авотхер (фамилие такое). Биг босс мерикано-индусов купил себе крутейший порш, мне на гальштук бабла не хватило ;)

Вот с тех пор мне эти большие лавки а-ля ибеме особенно неавистны!!!

vs - биг босс сука, отблагодарил, натурально

Vik- И нах я спрашивается тогда проблему-то решил просто так? Надо было сразу договариваться что порш - мне, меня б и не позвали б, поехал бы другой скубент, а у меня б остался пиетет перед ибеме ;)

vs - Каждый знает, что ибеме - ето круто! В ем ты должен мастерски и вовремя снимать портки перед большим боссом?

Vik- Хули - контора-то на которую я тогда вкалывал была "транс-наци-АНАЛЬНОЙ", то есть - индусы всех мастей и всех континентов (кроме Атлантиды) пытались изображать бурную деятельность, но поскольку руки у них понятно откуда растут и мотивация известно какая, результат получался только случайно и то через ЖОПУ.

Чувак, это называеццо - большая контора.

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

Рядовой программер - он ваще ни за что не отвечает в лавках ибеме-стайл, отвечает только его менагер. Максимум че могут сделать в ибеме - тупо уволить, и то твой менагер заколебется отчОты пейсать - как это он, мудак такой, тебя нанял, ты у него работал и внатуре без проблем, а тут - опа! - и уволить.

Ну а тимлид - это такой рядовой, которому дали сержантские лычки. Отвечать он рылом в ибеме не вышел, его задача - помогать своим коллегам в распиздяйстве и рукосуйстве

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

vs - Поентому в ибеме увольняют отделами.

Vik- причем это происходит примерно так.

Приходит мистер фукута с годовым отчОтом к биг боссу, а там - опа! мульен баксов в минуса.

Биг босс такой

- але!!! че за херня!!! где прибыль нах?! че я акционерам показывать буду, твои убытки?!

(берет за хальштук мистера фукуту) - ГДЕБАБЛОБЛЯ!!!

Ежель енто первый раз - менагер еще может отбрехаться.

Если третий год подряд - пушной полярный лис гальштуку, менагеру и всему отделу.

Угадай шо случилось с нашим клиентом?!

vs - Вот мистер фукута и огреб. Он по моему уже второй год там руководствует.

Vik- ага! и бабло - строго в минусах. Вот и результат.

vs - большой босс в растройстве!

Vik- он не в расстройстве, он имеет мистера фукуту без вазелина и распускает егойные раздутые штаты нах. Пятнадцать мега-менагеров мистера фукуты уже пакуют чемоданы. А фиг ли - стока руководителев (от слов "разводить руками") на одного девелопера даже в докризисную эпоху было черезчур, а уж сейчас - и подавно.

vs - сучки, надеюсь и он сам тоже?

Vik- Фиг его знает - биг босс может его отправить на понижение, сменить там гальштук на более скромный, дать поруководить отделом чистки сортира к примеру.

vs - Менагер по внешней санитарии будеть! Подметать дорожки вокруг конторы.

Vik- точно!!!
xxx: Hам страшный юникс ни к чему!
xxx: Мы сервер под виндой поставим
xxx: И эникейщика приставим
xxx: Раз в день давить ресет ему.

yyy: Hет, мы и тут подэкономим
yyy: зачем платить нам лишний грош ?
yyy: ведь и в винде есть свой щедуллер -
yyy: он ребутнёт когда захошь.
Про трудности левизны

А в гугле - как только ты займешься явно не своей прямой работой, уверяю тебя, и коллеги поинтересуются (и громко, на всю рассылку), какой это такой херней ты занят, и супервайзер подвалит, посмотреть, над чем это ты трудишься вместо его задачи.

И сам он поставить подчиненному задачу "а, знаешь что... добудь-ка мне почту имярек, а я тебе официально щас напишу в таймтейбл ковырять в носу с пяти до шести" - тоже не может, его сперва может и спросят, в своем ли он уме, а потом быстренько заложат, тем более его место многим уже нравится. Ну и организация штатовская и любопытство к чужой личной жизни там считают пороком.

Ну и еще немного - про почту и страшного дядю Сэма.

EBB> И если дядя Сэм захочет тебя слегка поиметь, он
EBB> сделает это так нежно и ласково, что ты даже не заметишь. :)

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

Hу и, собственно, что? Hайепал-то - родное, а не его. Так что да - даже и не замечу, дядяСэм вздохнет брезгливо и даст звиздюдей агенту, притащившему эту дрянь вместо арабского террориста.

О ценности электропочты

EBB> Hе верю, что в твоей почте есть что-то ценное. Скорее всего из ней

в моей почте есть пароли, схемы корпоративной сети, решения в этой сети используемые, которые будут довольно интересны конкурентам. Я был бы крайне не рад если бы она утекла кому-то лишнему.

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

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

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

Про шкайп

IA> Ужэ мечтаю нормально говорить со скайповыми юзерами.

шапочка из фольги мешает?

IA> Расстояние, бабки за мобилу и отсутствие в мобиле поддержки

так ты поднеси харю поближе к микрофону, в чем проблема с расстоянием-то?

Причем тут мобила тоже не понимаю - скайповые юзеры говорят в компьютер. Что, кроме шапочки, мешает тебе делать то же самое?
Eugene B. Berdnikov wrote:

EBB> Зачем? Hадо только при всех жалобах постоянно повторять, что общение
EBB> почтой с mail.ru чревато, что каждое письмо надо дублировать звонком
EBB> и факсом. Пусть начальство неустанно звонит и шлёт факсы...

это если оно такое же тупое как твое (во всяком случае каким ты его успешно сумел представить) и при этом верит любому слову мудака, который называется админом, такое, будет, возможно, звонить и слать факсы. Я только удивляюсь, почему ты его еще не развел просто на то чтоб тебе свой бизнес подарить, заодно с блядями, машинами и квартирами, раз оно настолько лишено ума.

Или уже развел?

А вменяемое просто бы попросило админа либо сделать чтоб работало, либо по собственному. Причем если подобный саботаж повторится - то уже не по собственному, а за служебное несоответствие. Это уже не pop3 в XXI веке, это уже совсем очевидное вредительство.

Женя, я почему-то не имею проблем с мэйлру. И мои клиенты - тоже. Hи одной. Как ты думаешь, чем для тебя закончится мой приватный разговор с твоим начальником, если мы пересечемся где-то во внеинтернетом мире, подобные случаи иногда бывают?

EBB> не беспокоит, админ своё дело сделал -- о проблеме предупредил и
EBB> технологию её преодоления на блюдечке предоставил. :)

Угу. Сантехник свое дело сделал - воду в сортире отключил, канализационный стояк разобрал. И технологию преодоления - срать в ведро, выносить на задний двор, на остатке срулона написал. И даже, во дела, предоставил ведро. А в унитаз ни в коем случае не срать, он от этого засоряется. И правда ведь, засоряется. Hо почему-то ни одного места где работают такие сантехники я не встречал. А таких админов - пруд пруди.

Это при том что мало-мальски приличного сантехника надо поискать, а админа, способного на что-то получше pop3 с фильтрацией мэйлру вместо антиспама, найти все еще не проблема, только плати (а скоро их голодных и на все согласных, даже на утренний минет, будет вообще
толпа).

>> Alex
From: Bill Gates
Sent: Wednesday, January 15, 2003 10:05 AM
To: Jim Allchin
Cc: Chris Jones (WINDOWS); Bharat Shah (NT); Joe Peterson; Will Poole; Brian Valentine; Anoop Gupta (RESEARCH)
Subject: Windows Usability Systematic degradation flame

Я слегка разочарован тем, как ухудшается юзабилити Windows и что менеджеры группы не занимаются этими вопросами.

Позвольте мне рассказать о своём собственном вчерашнем опыте. Я решил скачать Moviemaker и купить пакет Digital Plus... так что я пошёл на сайт Microsoft.com. Там есть раздел загрузки софта, и я направился туда.

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

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

Этот список полностью сбивает с толку. По сравнению с некоторыми названиями даже название папки C:\Documents and Settings\billg\My Documents\My Pictures кажется ясным и понятным. Некоторые вещи не фильтруются системой... и много другого странного.

Я попытался ограничить список только по “Media”. Всё равно нет Moviemaker. Я набрал “movie” в поиске. Ничего. Я набрал “movie maker”. Ничего.

После этого я сдался и отправил письмо Амиру с вопросом: где страничка для скачивания Moviemaker? Она вообще существует?

Они ответили мне, что использовать раздел загрузки для загрузки чего-нибудь — это не совсем то, что ожидается от пользователя. Мол, нужно идти на главную страницу сайта и там запустить основной поиск по сайту по ключевым словам “movie maker” (не “moviemaker”!).

Я попробовал. Сайт трогательно подвис, но через шесть секунд страница загрузилась. Я был уверен на сто процентов, что уж теперь-то я увижу кнопку, чтобы скачать то, что мне надо.

На практике результат оказался больше похож на головоломку. Мне было сказано идти на сайт Windows Update и там произвести ряд заклинаний.

Это абсолютно выбило меня из колеи. Почему я должен идти куда-то ещё и запускать сканирование системы, чтобы скачать Moviemaker?

Всё-таки я перешёл в раздел Windows Update. Система решила, что я должен скачать кучу системных элементов. Не один, а несколько раз я видел странные диалоговые окна. Неужели Windows Update не может найти общий язык с Windows?

Потом я запустил сканирование. Оно заняло некоторое время и мне сообщили, что для меня критически важно скачать 17 МБ всякой фигни.

И это после того, как мне сообщили, что мы делаем дельта-патчи, но вместо того, чтобы предложить 6 элементов, которые были описаны самым СТРАШНЫМ возможным образом, мне пришлось скачивать 17 МБ.

Я всё-таки запустил скачивание, которое прошло быстро. Потом оно захотело сделать инсталлирование. Процесс занял шесть минут и компьютер так тормозил в это время, что я вообще не мог его использовать для других задач в это время.

Что за хрень он делал эти шесть минут? Какое-то сумасшествие. Это ведь после того, как загрузка была завершена.

Затем система сказала мне перезагрузить компьютер. Почему я должен это делать? Я перезагружаюсь каждую ночь — почему я должен перезагружаться прямо сейчас?

Но я всё-таки сделал перезагрузку, потому что она НАСТАИВАЛА на этом. Конечно, это означало полностью потерять текущее состояние открытых окон в Outlook.

Итак, я вернулся в систему и меня снова направили на Windows Update. Я уже вообще забыл, зачем я зашёл туда, ведь мне нужен был всего лишь Moviemaker.

Итак, я вернулся на Microsoft.com и изучил инструкции. Я должен был нажать на ссылку под названием “WindowsXP”. Зачем это делать? Неужели Windows Update не знает, что я работаю под Windows XP?

К чему привело нажатие на эту кнопку? Я получил кучу ненужных вещей, настолько много, что среди них уж точно был Moviemaker.

Итак, я перешёл к скачиванию. Оно прошло быстро, но инсталляция опять заняла много минут. Удивительно, насколько медленно она работает.

В какой-то момент выскочило сообщение, что мне нужно скачать Windows Media Series 9.

Итак, я решил сделать это. В этот раз передо мной возникали диалоги с кнопками вроде “Open” или “Save”. Никаких инструкций или помощи, что делать. А я понятия не имел что делать.

Скачивание прошло быстро, а инсталляция заняла 7 минут для одной этой программы.

Ну, я думал что уж теперь-то у меня есть Moviemaker. Я пошёл в меню «Добавить/удалить программы», чтобы убедиться в этом.

Его там не было.

Что там было? Всякий мусор, в том числе тестовый пакет Microsoft Autoupdate Exclusive, тестовый пакет Microsoft Autoupdate Reboot, а также Microsoft Autoupdate тестовый пакет 1, Microsoft Autoupdate тестовый пакет 2, Microsoft Autoupdate тестовый пакет 3.

Кто-то решил замусорить единственную часть Windows, которой можно было пользоваться? Файловая система больше непригодна к использованию. Реестр непригоден к использованию. Список программ оставался единственным нормальным местом, но теперь и его изгадили.

Но это было только начало. Позже я увидел вещи вроде “Windows XP Hotfix, см. Q329048 для дополнительной информации”. Что такое Q329048? Что эти патчи тут делают? Некоторые патчи просто называются “Q810655” вместо того, чтобы говорить “см. Q329048 для дополнительной информации”.

Это абсолютный бардак.

Moviemaker вообще там не присутствовал.

Так что я оставил надежду получить Moviemaker и решил скачать Digital Plus Package.

Мне сообщили, что я должен ввести кучу информации о себе.

Я ввёл всё это, но система решила, что я опечатался где-то и мне пришлось вводить всё заново. Конечно, почти всё, что я набирал раньше, исчезло.

Я пытался набрать правильно пять раз и оно каждый раз всё стирало, и я набирал заново.

Так что после более чем часа сумасшествия, засорения моего списка программ, запугивания и убеждения в том, что Microsoft.com — это ужасный сайт, я так и не получил Moviemaker и не Plus Package.

Недостаток внимания к вопросам юзабилити, который я увидел, просто потрясает меня. Я раньше думал, что мы достигли дна с юзабилити Windows Network или сообщениями, которые я получал, пытаясь использовать 802.11 (вы ещё не полюбили сообщение о корневом сертификате?).

Когда я по-настоящему доберусь до использования всех этих вещей, я уверен, что напишу дополнительные отзывы.
Это ж п***ц, до чего мы дожили со своим техническим прогрессом! Вдумайтесь: человек ждет, пока железяка закончит свои дела и даст ему новые инструкции! Стоило ради этого спускаться с пальмы и брать в руки каменный топор? Это еб***ся, мир с ног на голову!

А эти замечательные строчки в описаниях новых товаров: "данная видеокарта поддерживает Виндоус Висту". Не операционная система поддерживает видеокарту, нет! Видеокарта поддерживает, прогибается под соответствие системе! Железка - под программку! Моя ступня годится для новых ботинок, мой желудок поддерживает переваривание химсостава гамбургеров нового поколения, о везение! Это уже сегодня!

А что же будет дальше? А дальше вслед за железкой в мясорубку отправимся мы с вами. Мы будем учиться обхаживать операционную систему, понимать операционную систему, контактировать с операционной системой. Откроются курсы по изучению психологии, привычек и мотивов поведения операционной системы, появятся тренинги "как расположить к себе операционную систему", "эффективное убеждение операционной системы", "тактика и стратегия переговоров с операционной системой"...

На прилавках повылазят книжки "Чего хочет операционная система", "Как завоевать доверие операционной системы", "Искусство подчинять себе операционную систему", "1001 способ произвести впечатление на операционную систему"...

(C) http://www.razgovor.org/special/article588/
(Ц) http://www.rsdn.ru/Forum/message/2929998.aspx

Как это ни прискорбно признавать, но то, что мы называем RAM (random-access memory) уже давно не является RAM. По сути это уже память с последовательным доступом. Как магнитная лента. Здесь я имею в виду RAM не в смысле физическое устройство, а в смысле подсистема памяти компьютера, которая состоит из собственно основной памяти и нескольких уровней кэша.

Приблизительные цифры скорости доступа к различным уровням памяти на современных архитектурах:
Кэш L1 — 1-3 такта
Кэш L2 — 10-20 тактов
Основная память — 200-250 тактов

Что это означает для нас, программистов? То, что RAM — не RAM и абстракция "прозрачного" кэша начинает серьёзно "просвечивать". В пределе, при максимально плохом стечении обстоятельств при доступе к памяти, процессор с частотой 2.5 GHz фактически будет работать на частоте 10 MHz. Как Вам? В реальности, конечно, такого не будет даже в самых плохих условиях. Но разницу производительности в ~10 раз получить можно легко.

Умножение матриц

Возьмём вот такую простенькую функцию перемножения матриц:

void multiply(T* X, T* Y, T* Z, int size)
{
for (int i = 0; i != size; ++i)
for (int j = 0; j != size; ++j)
for (int k = 0; k != size; ++k)
Z[i*size+j] += X[i*size+k] * Y[k*size+j];
}



Запускаю для матриц размера 512 — результат 16.9 секунды.
Запускаю для матриц размера 513... делайте ставки, господа! Результат 4.8 секунды!

Причина кроется в паттерне прохода по матрице Y во внутреннем цикле. При размере матрицы 512 размер строки матрицы составляет 4096 байт (8-байтовые элементы). Соответственно адреса элементов Y[0][0] и Y[1][0] имеют одинаковые младшие 12 бит. Это вызывает постоянные конфликты в кэше с вытеснением старых данных.

Теперь для размера матрицы 513 попробуем попереставлять циклы местами. Результаты следующие:
k, j, i — 6.8 сек (для размера 512 время 34.1 сек)
j, k, i — 6.8 сек
i, j, k — 4.8 сек
j, i, k — 3.6 сек
k, i, j — 2.5 сек
i, k, j — 2.4 сек
Занятно. Итого: индексы (k, j, i), размер 512, время — 34.1; индексы (i, k, j), размер 513, время — 2.4. Ускорение — 14.2 раза. А вроде как ничего и не делали.
(матрицы перемножать с помощью этого кода скорее всего не стоит — лучше воспользоваться оптимизированными библиотеками, тут я хотел показать только эффекты от различных паттернов обращения к памяти)

Вкратце рецепт такой — по массивам надо проходить последовательно; учитывать количесто ассоциативных входов в кэш (обычно это 2 или 4); учитывать значащие биты в адресе, которые определяют индекс в кэше. Более подробно здесь:
http://en.wikipedia.org/wiki/CPU_cache

Cache-Conscious Binary Search

Это была разминка, теперь более интересные и нетривиальные вещи.
Как организовать быстрый бинарный поиск при большом объёме данных? Ответ теоретика — с помощью бинарного дерева. Ну ладно, простим ему это. Конечно, с помощью упорядоченного массива. На маленьком объеме данных это будет работать хорошо, но вот на большом — не очень. Что бы понять почему, надо рассмотреть как происходит перемещение "точки поиска" по массиву в вслучае бинарного поиска. Вначале точка устанавливается на середину (1/2), потом "скачет" либо на 1/4, либо на 3/4, потом — на 1/8, 3/8, 5/8, 7/8 и т.д. Т.е. вначале "скачки" очень большие и хаотические. При этом из каждой
загруженной кэш-линии используется в основном только один элемент, ближайшие к нему элементы не используются.
Попробуем исправить это, попробуем сделать т.ч. "скачки" были по-возможности маленькие, и при этом из каждой загруженной кэш-линии использовалось как можно больше элементов.
Упорядочиваем массив следующим образом. В первую кэш-линию (допустим в кэш-линию помещается 8 элементов) кладём серединный элемент 1/2, следом за ним кладём элементы, на которые мы можем перескачить с 1/2, т.е. 1/4 и 3/4. Далее кладём элементы, на которые мы можем перескачить с 1/4 и 3/4, т.е. 1/8, 3/8, 5/8, 7/8. Таким образом, используя элементы только из первой кэш-линии, мы можем сделать 3 "скачка", при этом из неё будет использовано 3 элемента, а не 1 как ранее.
Далее элементы пакуются аналогичным образом, т.е. в кэш линии лежит некий начальный элемент; элементы, на которые можно "перескачить" с него; и элементы, на которые можно перескачить с них и т.д.
На синтетических бенчмарках такой метод дают ускорение в 4-5 раз, в реальных приложениях есть сведения об ускорении на 25-40%.

Hot/Cold Data Splitting

Посмотрим, что ещё можно сделать с нашим бинарным поиском.
Допустим, в массиве у нас храняться следующие структуры:

struct X
{
int key;
unsigned char some_data [28];
};


При этом при поиске используется только поле key. Размер структуры 32 байта, т.е. массив будет большой и толстый, и при поиске в нем неминуемо в кэш будет загружаться и some_data, которая вобщем-то нам совершенно не нужна, пока мы не нашли один искомый элемент.
Что мы делаем — мы разбиваем нашу структуру на 2:

struct X_hot
{
int key;
};
struct X_cold
{
unsigned char some_data [28];
};


Кладём в массив, в котором мы производим поиск только X_hot, а X_cold выносим в отдельный параллельный массив, в котором элементы упорядочены так же, т.е. по номеру элемента X_hot без труда можно получить и элемент X_cold.
Теперь поисковый массив у нас маленький и тонкий, в данном случае меньше в 8 раз (возможно в таком виде он целиком уместится в кэш L2), поиск в нём идёт быстрее. А когда нашли индекс искомого элемента, то загружаем и один нужный X_cold со всеми остальными данными.

Управление кэшем

Кэш не полностью управляется процессором — можно попробовать поуправлять им вручную. Хотя обычно этого делать не стоит. Я вкраце опишу какие средства есть на современных процессорах Intel/AMD x86. В любом случае любое применение таких средств надо тщательно профилировать, т.к. априори предугадать все эффекты сложно.

prefetcht0 (t1, t2, nta)
В MSVC инструкцию prefetcht0 реализует следующий интринсик:

void _mm_prefetch(char * p , int hint ); // hint = _MM_HINT_T0, _MM_HINT_T1, _MM_HINT_T2, _MM_HINT_NTA


Команде передаётся адрес, данные по которому будут загружены в кэш (загружается, естественно вся кэш-линия — сейчас обычно 64 байта). Так же команде передаётся хинт относительно предполагаемого использования этих данных. _MM_HINT_T0, _MM_HINT_T1, _MM_HINT_T2 скорее всего не различаются и загружают данные в кэш L2. _MM_HINT_NTA более интересен, он говорит, что данные нужны на короткое время. При этом данные загружаются в кэш L1, и помечаются специальным тэгом, который говорит, что при вытеснении из L1 данные не надо перемещать в L2 — из просто надо "выкинуть". Т.о. не происходит т.н. "загрязнения" кэша. Очень полезно при потоковой обработке больших массивов.

movnti/movntq
В MSVC инструкцию movnti реализует следующий интринсик:

void _mm_stream_si32(int *p, int a)


Фактически это — сохранение в память слова, но при этом процессору даётся хинт, что сохранённые данные в ближайшее время не понадобятся. Т.е. данные не кладутся в кэш, а по возможности отправляются сразу в память. Это тоже предотвращает "загрязнение" кэша, и полезно при сохранении данных при потоковой обработке больших массивов.

clflush

void _mm_clflush(void const*p)


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

Почему не надо вручную управлять кэшем. Потому что процессор имеет аппаратный предвыборщик данных, который в большинстве случаев делает свою работу достаточно хорошо. Сделать лучше, чем он, можно. Но легче сделать хуже. Когда можно заниматься ручным управлением кэшем — при потоковой обработке больших массивов данных (в т.ч. и при просто копировании памяти). В общем случае данные подгружаются на 4-8 строк кэша вперёд с помощью инструкции prefetchnta, и сохраняются с помощью movnti/movntq. В таком случае можно получить ускорение в 10 раз и более.

Более подробно здесь:
Intel® 64 and IA-32 Architectures Software Developer’s Manual: Instruction Set Reference
http://www.intel.com/design/processor/manuals/253666.pdf
http://www.intel.com/design/processor/manuals/253667.pdf


Факультативное чтение по поводу Cache-Conscious Data Structures. В т.ч. описаны и другие приёмы — Structure Field Reorder, Cache Colouring, Cache-Conscious Heap Allocation.

Cache-Conscious Data Placement:
http://citeseer.ist.psu.edu/cache/papers/cs/130/http:zSzzSzwww.cse.ucsd.eduzSz~calderzSzpaperszSzASPLOS-98-CCDP.pdf/calder98cacheconscious.pdf

Cache-Conscious Structure Definition:
http://research.microsoft.com/~trishulc/papers/definition_distr.ps
(занятно — люди из Microsoft Research занимаются Java)

Cache-Conscious Structure Layout:
http://research.microsoft.com/~trishulc/papers/layout_distr.ps

Cache-conscious Frequent Pattern Mining on a Modern Processor:
http://www.vldb2005.org/program/paper/thu/p577-ghoting.pdf

Cache-Conscious Concurrency Control of Main-Memory Indexes on Shared-Memory Multiprocessor Systems:
http://www.vldb.org/conf/2001/P181.pdf

Cache-Conscious Allocation of Pointer-Based Data Structures Revisited with HW/SWPrefetching:
http://www.ece.wisc.edu/~wddd/2003/01_hallberg.pdf
(Ц) Кошмарь.

VN> А что, с софтом как-то иначе поступают (если не продают лицензии)?

вот Билли поступил иначе. И ничего удивительного в том что купили его, а не пердеж академика. Hикаких закулисных интриг, бизнес решение на уровне среднего помощника младшего менеджера отдела закупок. Сейчас тот академик может хоть все локти себе обгрызть, а тогда небось еще как гордился - "эти продались с потрохами за гроши, а мне за каждую копию-то двестибаксофф перепадает - ЭЭХХ, некисло я свою кандидатскую диссертацию продал". Если это не был, конечно, курсовик третьего курса - судя по учебникам, вполне популярное в те времена было задание. "Выполняется без особых проблем студентами, несущими обычную академическую нагрузку" (c)

VN> Или Вы предпочли бы в этой ситуации продать и больше не знать что

Вот Билли предпочел. И он - на коне, а вы держите фигу в кармане.

VN> И чем это противоречит исходному утверждению? Работала в
VN> значительной мере IBM, а сливки сейчас снимает именно MS - потому

С осьдвы? У тебя глюки, не читай больше конспирологов на ночь. С осьдвы MS кроме геморроя ничего не сняла.
> >>> http://abcdefgh.livejournal.com/918512.html
> Красивые ярлыки, я сам такие употребляю:) А пройтись по фактам и
> опровергнуть их по отдельности - могёшь? Или только с ярлыками?

Да, ярлыки у него красивые.

А по фактам - чего факты опровергать? Вот выводы из этих фактов таки да - чудесатые.

Посмотрим на всемогущую Мери Гейтс. Зададимся вопросом - а сколько получили "одаренные дети" за свой интерпретатор бейсика? И сколько запросил бы суровый дядька прохфессор? О! Тут и ответ. Чего тут рассусоливать - непонятно.

Однако почитаем про ДОС, посмеемся. Вот тут-то конспирологи порезвились от души.

> CP/M к тому времени уже имела installation base из более
> чем полумиллиона компьютеров

И никто не задумался - каких именно? На 8088 нинкаких ЦеПе/Ме с "600 000 инсталляций" не существовало. Ибо ЦеПеМе и ЦеПеМе-86 - это в общем-то не одно и то же.

Переговоры с DR как и ожидалось - уперлись в роялти. "Хотим бабла и все тут". И ведь получили возможность! При чем тут Билли? Это он уговаривал поднять цену? 8-)

Однако, братцы, цепеме - это вам не ексель на коленке забабахать, эвон - даже многократно более сложные минет-оси лепятся студентами на раз в одиночку. Ибеме срочно ищет клон. И находит - что в этом странного? Обычная тупость и жадность прохфессора.

Да и клонов - как грязи. Сколько Петерсен рисовал свою QDOS? Это еще одна подсказка.

Причем как я уже упоминал - ибеме нашли *лучшее* решение. Они нашли дешевого студиозуса (Билли), который им готов отдать (именно так!) свою "ДОС" даром. Аж до середины 90х за каждую копию доса Билли от ибеме получал... шиш! А вы думали - по 40 у.е? 8-)

Даже (до выхода окон-95), за многократно более сложную Windows, включая Win3.11 - Билли получал по 8 (восемь) доллеров, ага.

Заметьте, ибеме не любит рисков, ибеме подстраховывается. Ибеме предоставляет опцию своим клиентам - они *могут* купить цепеме. Да, дороже. Но это уже вопросы не к ибеме, а к Digital Research.

А что мы читаем на сайте?

--------------------------------------------------------------------
Digital Research - это была реально работающая компания, которая вложила серьезные средства в разработку системы CP/M и не могла уже хотя бы по этой только причине позволить себе раздавать экземпляры своей OS за ту "бросовую" цену, которую по сознательному ровно к тому подготовленному классически демпинговой природы сговору назначили компаньоны
--------------------------------------------------------------------

Охеренно! *МЕСЯЦ* работы - и на тебе, 200 у.е. / копия (40 берет ибеме). Блин, даже я постесняюсь такие цены заламывать. 8-))) "Бросовая цена", ага.

Это, товарищи, называется "очень жадные". При объемах поставок ибеме пеце хотя бы в 10 000 штук (ибеме за меньший тираж просто не возьмется) - хотеть так по-скромному - 2 000 000. Губозакаточную машину с вызовом на дом - срочно! 8-)

Ну а почему Билли? А очень просто. Это тоже написано на сайте. У микрософта уже есть некислый опыт создания операционок, причем в отличие от примитива цепеме - очень сложных. Правда подано... в своем стиле, называется этот стиль "я в нее ем".

--------------------------------------------------------------------
Еще раз обратим внимание, что ситуация с производством Microsoft своего продукта Xenix из приобретенного от AT& T по лицензии Version 7 Unix была полностью симметричной той как получили MS DOS из CP/M, но ... без лицензии Digital Research.
--------------------------------------------------------------------

Парни с http://abcdefgh.livejournal.com/918512.html, у вас с гойловой все в порядке? Вы в упор не видите разницу между лицензированием товарного знака UNIX (TM) и предоставлением совместимости по некоторым (!) сисколлам?

Похоже что не видят. 8-)

--------------------------------------------------------------------
Таким образом Микрософт через короткое время вышла на тиражи MS DOS по сути совпадающие с общим объемом сбыта IBM PC.
--------------------------------------------------------------------

Было бы очень удивительно, если бы это было не так. Кстати тут мы видим явное вранье - дос от микрософта называлось MS DOS. А PC DOS - это дос от ибеме, которую на контракте поддерживал и развивал микрософт. Получая денег за работу. А не за копии.

И по определению PC DOS поставлялась на 100% персоналок от ибеме. А MS DOS там не было ни одной.

Подчеркну красным - денег за ДОС Билл получал от кого угодно, *кроме* ибеме. Не находите, что ибеме весьма смачно Билли отымела в весьма извращенных позах?

Коммерческий гений Билили состоит именно в том, что (выдав 50К Петерсену) он *сумел* *сохранить* *права* на ДОС как таковую у себя, а не передал их ибеме (что случилось бы мгновенно, если б не этот трюк). То есть вместо "разработаю под ключ" Билли сумел предложить "кастомизацию на базе".

Но, я извиняюсь, нагородить тонну бреда, и не понять - зачем все это было проделано - это надо очень уж увлекаться поиском врагов под кроватью.

Разжевываю.

1. "Кустомизация на базе" - это пряник для ибеме. Разработать под ключ мог кто угодно, предложить "доработку" за гроши - только микрософт. То есть мы снова видим ту же картину - предложение от Билли самое дешевое.

2. Оригинальная QDOS - MS DOS - осталась собственностью микрософт. Ибеме это было неинтересно, ведь они уже получали то же самое даром. И как минимум на стоимость самого ДОСа компы от ибеме всегда оставались дешевле конкурентов.

Другое дело, что последователев с персоналками стало скоро больше, чем самих ибемешных персоналок. Но будьте покойны - *этого* ибеме не планировало. Им была нужна периферия от сторонних вендоров, а не клоны всей платформы 8-)

Комментировать "произвели впечатление" - это к любителям такого блюда. Ну ошибся гражданин John Whatron, бывает. Не оценил. Делать из этого выводы - смешно. Как и комментировать глупейшие эскапады "пораженная его искусством компания ИБМ поставила на свой IBM PC".

--------------------------------------------------------------------
С легендой о характере первого этапа создания компании Микрософт по-видимому хоть чуть, но возможно в чем-то пояснело, однако остается по-преженму непроницаемо безответным вопрос - зачем это все надо было ИБМ?
--------------------------------------------------------------------

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

Кто-то считает, что он мог поиметь на месте ибеме нечто лучшее?

Или это "лучшее" - удорожать *каждый* продаваемый агрегат на 200 баксов? Спешу обрадовать - это *худший* из всех вариантов.

Только хитрожопость Билли (уж не ведаю - сам ли он догадался застолбить права за досом или ему всемогущая мама подсказала 8-))) - позволила ему с доса иметь свой скромный кусочек хлеба с маслом.

Икорка возами на Билли посыпалась уже после того, как он сумел организовать разработку двух уникальных систем - Windows и Windows NT. Даже спустя двадцать лет - ничего подобного разработано не было (и самое смешное - никто и не берется).

Это не ось-на-два тачать (которая так и не выросла из позы "наш ответ микрософту на Windows 2.0").

Я подробно разжевал? 8-)
Инженегр: за ударный труд получает пряник (иногда). За ошибки - кнутом по жопе. Сзади никого.

Манагер: Кнутом по жопе подчиненных, сзади пристроились клиенты и совершают харасьмент, пряник жует сам. Опционально плачет или смеется.

Топ-манагер: Кнутом по жопе манагеров, пряников много, все не съесть, сзади пристроилось клиентуры еще больше чем пряников, и все с извращениями. Плакать уже не может, опционально смеется.

J2EE ;-)

Dec. 3rd, 2007 12:54 pm
..посреди многослойной, переплетенной из еаров, сервисов, коннекторов и пулов структуры сервера приложений, органично врастая в сеть модульной архитектуры, выставив наружу красивые интерфейсы, посылая и получая сообщения, отвечая на эрэмай запросы, словно кипящий поток создавая и уничтожая сотни ентити бинов в десятках распределенных транзакций, мудрый сессионый бин срал в лог эксепшенами...

Profile

viklequick

February 2017

S M T W T F S
   1234
567891011
12 131415161718
19202122232425
262728    

Syndicate

RSS Atom

Style Credit

  • Style: (No Theme) for Abstractia by [personal profile] chiming

Expand Cut Tags

No cut tags
Page generated Jul. 18th, 2025 08:26 am
Powered by Dreamwidth Studios