31.03.2006
Жалобы на разнобразие финских имен
Мало того, что раньше, в Йоэнсуу, в университете у нас был админ Юха, у меня сосед Юхо и коллега Юкка... и я все время путался... Так еще и сейчас два коллеги - Теппо и Теро. Тоже путаюсь. =)
Путь
"Старый пердун. Сидел бы дома, никому не мешал бы, а то нет, выполз на дорогу. Идет, расклячившись, весь тротуар занял. А как его обгонять? Я на автобус опаздываю, а он, блин, еле тащится. Что ж он до сих пор-то не сдох?..."
* * *
- Мам, а мам! Смотри! Дедушка с лыжными палками! Он лыжник, да?
- Сколько раз я тебе говорила, не показывай пальцами! Нет, он не лыжник. Просто он старенький, и палочки помогают ему.
* * *
"Вот ведь человек... Еле идет, а не сдается. Молодец. Видно, что тяжело ему, так все равно идет и идет. Медленно, но верно. Мне б такое упорство.
Хотя, наверное, привыкаешь к небыстрому ритму жизни. И выходишь из дома заранее, и делаешь поправку на погоду, и вообще далеко не ходишь - до магазина только и обратно."
* * *
"О, опять этот забавный старик. Ведь регулярно ходит, молодец. Не сидит дома, не тухнет от безделья. Выбирается на улицу. Для здоровья полезно."
* * *
Старик шел знакомой дорогой, широко расставляя руки и упираясь обеими палками в обочины тротуара. Этот путь он проделывал дважды в неделю - по средам и пятницам. Главное, не поскользнуться, потому как сам он встать не сможет, а прохожих мало, да и не факт, что кто-нибудь бросится помогать.
Осталось пройти немного - полторы сотни метров или пять минут. Через пять минут он откроет дверь, войдет и проковыляет в дальний угол. Там закажет пива и напьется, напьется отвратительно, как делал это всю жизнь, каждую среду и пятницу.
* * *
- Мам, а мам! Смотри! Дедушка с лыжными палками! Он лыжник, да?
- Сколько раз я тебе говорила, не показывай пальцами! Нет, он не лыжник. Просто он старенький, и палочки помогают ему.
* * *
"Вот ведь человек... Еле идет, а не сдается. Молодец. Видно, что тяжело ему, так все равно идет и идет. Медленно, но верно. Мне б такое упорство.
Хотя, наверное, привыкаешь к небыстрому ритму жизни. И выходишь из дома заранее, и делаешь поправку на погоду, и вообще далеко не ходишь - до магазина только и обратно."
* * *
"О, опять этот забавный старик. Ведь регулярно ходит, молодец. Не сидит дома, не тухнет от безделья. Выбирается на улицу. Для здоровья полезно."
* * *
Старик шел знакомой дорогой, широко расставляя руки и упираясь обеими палками в обочины тротуара. Этот путь он проделывал дважды в неделю - по средам и пятницам. Главное, не поскользнуться, потому как сам он встать не сможет, а прохожих мало, да и не факт, что кто-нибудь бросится помогать.
Осталось пройти немного - полторы сотни метров или пять минут. Через пять минут он откроет дверь, войдет и проковыляет в дальний угол. Там закажет пива и напьется, напьется отвратительно, как делал это всю жизнь, каждую среду и пятницу.
29.03.2006
Юмор в новостях
Замечательная заметка на Gazeta.ru. Особенно мне понравилась фраза "студентам приходится самим позировать друг другу без одежды, чтобы их коллеги могли изучить форму черепа". =)
Футбол: результаты, обсуждение, предыстория
Реал Мадрид и Ювентус провели серию товарищеских матчей. Результаты сведены в таблицу.
Во всех шести матчах Реал выступал в роли принимающей стороны. Время начала серии - около 17:30 по среднеевропейскому времени (18:30 по локальному). Реалом играл Лаури, Ювентусом - я.
Наше противостояние в Pro Evolution Soccer продолжается уже довольно давно. Традиционно Лаури играет Реалом, а я - Ювентусом (немного пошло, ИМХО, играть Реалом - командой звезд =)). В самом начале постоянно выигрывал я. Спустя какое-то время и до последней серии стал выигрывать Лаури. Вчера борьба шла на равных.
Лаури пришел в компанию на три месяца позже меня. (Ох, это значит, что работаю в компании я вдвое дольше его! =)) Взяли его по результатам работы над Xmas Game. Подозреваю, за эти три месяца он успел принести компании больше пользы, чем я. =)
Real Madrid | Juventus |
---|---|
1 | 0 |
0 | 1 |
1 | 0 |
0 | 2 |
1 | 2 |
0 | 1 |
Наше противостояние в Pro Evolution Soccer продолжается уже довольно давно. Традиционно Лаури играет Реалом, а я - Ювентусом (немного пошло, ИМХО, играть Реалом - командой звезд =)). В самом начале постоянно выигрывал я. Спустя какое-то время и до последней серии стал выигрывать Лаури. Вчера борьба шла на равных.
Лаури пришел в компанию на три месяца позже меня. (Ох, это значит, что работаю в компании я вдвое дольше его! =)) Взяли его по результатам работы над Xmas Game. Подозреваю, за эти три месяца он успел принести компании больше пользы, чем я. =)
Jaska is back in the town
Офис... десять часов. Время, когда все должны быть уже на рабочем месте. Пустые темные комнаты, тишина. Из 35 человек программистов на месте всего лишь семеро. Спрашиваю, в чем дело? Калле задумался... Потом сообразил: вчера в город приехал Ясин, один из наших remote-девелоперов.
Ты мне больше не подружка, ты мне больше не дружок
Несколько размышлений о френдовании.
Слишком уж серьезно народ относится к понятию "френд". Довольно регулярно встречаются записи типа "расфрендил такого-то, бо не сошлись взглядами". Иные выдают вообще перлы типа "расфрендил такого-то, потому как у него во френдах такой-то". У меня сразу всплывает образ скандальной бабы с коммунальной кухни.
ИМХО, не стоит переводить термин "френд" дословно. "Френд" - это не друг... и даже не кандидат в друзья. Это просто человек, который пишет интересные (для тебя) вещи. Порой, с диаметрально противоположной точки зрения.
И я, честно говоря, предпочту иметь во френд-ленте одного человека с неприемлимыми для меня взглядами, позволяющего мне взглянуть на вещи с новой для меня стороны, чем пачку единомышленников, пишущих ни о чем.
Кстати, был у меня момент... после одного из постов я принципиально перестал его читать. Не читал примерно с полгода, и, наверное, зря. Наверняка пропустил несколько интересных и необычных мыслей.
Слишком уж серьезно народ относится к понятию "френд". Довольно регулярно встречаются записи типа "расфрендил такого-то, бо не сошлись взглядами". Иные выдают вообще перлы типа "расфрендил такого-то, потому как у него во френдах такой-то". У меня сразу всплывает образ скандальной бабы с коммунальной кухни.
ИМХО, не стоит переводить термин "френд" дословно. "Френд" - это не друг... и даже не кандидат в друзья. Это просто человек, который пишет интересные (для тебя) вещи. Порой, с диаметрально противоположной точки зрения.
И я, честно говоря, предпочту иметь во френд-ленте одного человека с неприемлимыми для меня взглядами, позволяющего мне взглянуть на вещи с новой для меня стороны, чем пачку единомышленников, пишущих ни о чем.
Кстати, был у меня момент... после одного из постов
27.03.2006
Приятное открытие
Extratitles.to (ИМХО, один из лучших cайтов с титрами) не прекратил работать, как я думал, а всего лишь переехал.
Список сайтов с титрами.
Список сайтов с титрами.
24.03.2006
Вы будете смеяться, но...
В ходе обсуждения с одним из коллег-начальников, попробовал вставить swap в какой-нибудь контест.
C source
int get_gcd( int a, int b )
{
while (1)
{
if (b == 0)
return a;
a %= b;
a ^= b ^= a ^= b;
}
}
int get_gcd_2( int a, int b )
{
while (1)
{
if (b == 0)
return a;
a %= b;
{
int c = a;
a = b;
b = c;
}
}
}
RVCT code | GCC code |
---|---|
get_gcd PROC | get_gcd: |
C source
void swap_memory( int* array, int len )
{
int i;
for (i = 0; i < (len / 1); i++)
{
array[i] ^= array[len - i - 1] ^= array[i] ^= array[len - i - 1];
}
}
void swap_memory_2( int* array, int len )
{
int i;
for (i = 0; i < (len / 1); i++)
{
int c = array[i];
array[i] = array[len - i - 1];
array[len - i - 1] = c;
}
}
RVCT code | GCC code |
---|---|
swap_memory PROC | swap_memory: |
В общем, для себя я сделал вывод - лучше не выпендриваться, использовать дополнительную переменную и не мешать компилятору самому оптимизировать данный кусок кода.
23.03.2006
В догонку...
Метод 1 | Метод 2 | |
---|---|---|
C source code | void f0( int a, int b ); | void f0( int a, int b ); |
RVCT [armcc -O3 -S] | ||f1|| PROC | ||f2|| PROC |
Symbian SDK gcc [gcc -O3 -S] | f1: | f2: |
P.S. Стоит, пожалуй, обратить внимание и на то, что в данных случаях RVCT выигрывает у Symbian's gcc =).
Трюк со switch/case
Любопытна реализация конструкции switch/case в компиляторе RVCT для процессоров ARM. Довольно специфическая вещь, но, может быть, кому-нибудь пригодится - в качестве примера.
Данный трюк используется при компиляции кода в режиме THUMB. Этот режим используется для получения компактного кода для процессоров ARM.
Итак, условия:
- конструкция switch/case;
- ключ switch является целочисленным;
- значения в case-метках идут "почти" подряд (т.е., возможны пропуски);
- используется пять и более case-меток.
Пример:
int a;
...
switch (a)
{
case 10:
return 123;
case 11:
return 43;
case 12:
return 12;
case 13:
return 21;
case 15:
return 98;
}
return 1;
В этом случае RVCT генерирует вызов специальной процедуры __ARM_switch8 и сразу после точки вызова - таблицу переходов. Таблица переходов состоит из (n + 2) байтов плюс байт для выравнивания по границе слова (n - число case-меток).
Таблица переходов имеет следующий вид:
Смещение | Значение |
---|---|
0 | Число case-меток |
1 | Смещение до первой case-метки |
2 | Смещение до второй case-метки |
3 | Смещение до третьей case-метки |
... | ... |
n | Смещение до n-ой case-метки |
n + 1 | Смещение до default-метки (default-метка может быть неявной) |
[n + 2] | Дополнение до границы слова (если нужно) |
В функцию передается номер case-метки a. После этого выполняются следующие действия:
- По адресу [lp] считывается число case-меток n;
- Переданный номер case-метки a "обрезается" по отрезку [0..n];
- Выполняется переход по адресу, указанному в таблице по индексу a.
lp - адрес возврата из процедуры.
Для приведенного выше примера код выглядит следующим образом (значиние a содержится в регистре r0):
SUBS r0,r0,#0xa
BL __ARM_switch8
DCB 0x06,0x04
DCB 0x06,0x08
DCB 0x0a,0x0e
DCB 0x0c,0x0e
Красным цветом выделены переходы по неявной default-метке. В частности, такой переход выполняется в случае, если значение a равно 14.
22.03.2006
Форменные удобства
Тимо, наш пиар-мэнеджер, весь день проходил сегодня в тельняшке. Довольно забавно было видеть, как то, что в моем представлении ассоциируется с рабоче-походной одеждой, может довольно неплохо смотреться в офисе.
Тельняшку для Тимо привез я из Питера. Хотя и до этого у Тимо уже была одна. Тимо по достоинству оценил удобство этой части форменной одежды во время занятий скалолазанием. А вот что в тельняшке делать не стоит (опять-таки, по информации от Тимо) - так это идти в бар. С большой вероятностью человека в тельняхе примут за гея - какой-то стереотип, связанный с французскими голубыми.
У финнов, кстати, тоже есть аналог тельняхи - зеленый форменный свитер. В нем ходить не пробовал, но выглядит довольно удобно.
Тельняшку для Тимо привез я из Питера. Хотя и до этого у Тимо уже была одна. Тимо по достоинству оценил удобство этой части форменной одежды во время занятий скалолазанием. А вот что в тельняшке делать не стоит (опять-таки, по информации от Тимо) - так это идти в бар. С большой вероятностью человека в тельняхе примут за гея - какой-то стереотип, связанный с французскими голубыми.
У финнов, кстати, тоже есть аналог тельняхи - зеленый форменный свитер. В нем ходить не пробовал, но выглядит довольно удобно.
21.03.2006
Результаты дня
Доволен. Так и шел с работы - с улыбкой во всю физиономию. =) Второй low-level hack за последние три рабочих дня - и система заработала. О подробностях, может, напишу чуть позднее.
По итогам двух low-level hack'ов Сампо, лидер проекта, вручил мне шоколадного зайца. На самом деле, заяц был выдан Сампо с неделю назад, но Сампо, как выясняется, не любит шоколад (полезный коллега =)). Еще один повод для веселья. =)
По итогам двух low-level hack'ов Сампо, лидер проекта, вручил мне шоколадного зайца. На самом деле, заяц был выдан Сампо с неделю назад, но Сампо, как выясняется, не любит шоколад (полезный коллега =)). Еще один повод для веселья. =)
20.03.2006
Это он, это он - ленинградский почтальон
Мозилловское творение замучало окончательно. Какое-то все неуклюжее, медленное и чем дольше висит в панели задач, тем медленнее работает. К тому же и в system tray свернуть его у меня не получилось.
Решил вернуться к старому доброму The Bat!. Впрочем, к сожалению, не совсем доброму - за использование этой программы надо платить. И, похоже, в отличие от не менее старой и доброй Opera, разработчики Бэта делать свое детище бесплатным не собираются. Еще один минус The Bat! (в моих глазах) - это отсутствие версии под *nix-системы.
Зато у этого клиента есть обширные настройки, прячется он в system tray без проблем и довольно быстр. (Честно говоря, достойной замены ему я так и не нашел.)
А платить... ну что ж, пройдет trial period - и либо куплю студенческую лицензию (благо, еще студент), либо... вернусь на ThunderBird (поступок из области "мыши плакали, кололись, но кактус ели" =)).
Решил вернуться к старому доброму The Bat!. Впрочем, к сожалению, не совсем доброму - за использование этой программы надо платить. И, похоже, в отличие от не менее старой и доброй Opera, разработчики Бэта делать свое детище бесплатным не собираются. Еще один минус The Bat! (в моих глазах) - это отсутствие версии под *nix-системы.
Зато у этого клиента есть обширные настройки, прячется он в system tray без проблем и довольно быстр. (Честно говоря, достойной замены ему я так и не нашел.)
А платить... ну что ж, пройдет trial period - и либо куплю студенческую лицензию (благо, еще студент), либо... вернусь на ThunderBird (поступок из области "мыши плакали, кололись, но кактус ели" =)).
Как <b><i>не</i></b> создаются креативы
или из записок лже-статиста. =)
Ведь бывает же так... Ходишь-ходишь... Мысль тебя мучает. Интересная. И заходишь ты к ней с одной стороны. Потом с другой. И так примеришься, и этак. И ведь мысль-то любопытная! И запостить в жж вроде как не стыдно.
И вот обсасываешь ты ее день-другой-два... И вот уже три коронных фразы придумал - одной пост начать, вторую куда-нибудь в середину запихать, а третья - в заключение.
И вот - момент. Открываешь окошко браузера и пишешь. Сам процесс опущу - слишком он уж короткий. Нажимаешь клавишу "Update Journal" и... мда.
Из трех коронных фраз в тексте всплывают максимум две. Вернее, размер поста позволяет говорить о том, что они не всплывают в тексте, а, так сказать, составляют его. =) Из них только одна по форме достойна называться "коронной", да и ту убивает контекст. =)
И тут ты понимаешь, что не только не переплюнул каких-нибудь'а или 'а, а лучше б вообще и не писал. =)
К чему это я? Читайте, в общем, френд-ленту. Она интересная. =)
UPD: И к Фрумичу, и к Косте Иночкину отношусь с уважением. =)
Ведь бывает же так... Ходишь-ходишь... Мысль тебя мучает. Интересная. И заходишь ты к ней с одной стороны. Потом с другой. И так примеришься, и этак. И ведь мысль-то любопытная! И запостить в жж вроде как не стыдно.
И вот обсасываешь ты ее день-другой-два... И вот уже три коронных фразы придумал - одной пост начать, вторую куда-нибудь в середину запихать, а третья - в заключение.
И вот - момент. Открываешь окошко браузера и пишешь. Сам процесс опущу - слишком он уж короткий. Нажимаешь клавишу "Update Journal" и... мда.
Из трех коронных фраз в тексте всплывают максимум две. Вернее, размер поста позволяет говорить о том, что они не всплывают в тексте, а, так сказать, составляют его. =) Из них только одна по форме достойна называться "коронной", да и ту убивает контекст. =)
И тут ты понимаешь, что не только не переплюнул каких-нибудь
К чему это я? Читайте, в общем, френд-ленту. Она интересная. =)
UPD: И к Фрумичу, и к Косте Иночкину отношусь с уважением. =)
19.03.2006
И опять поезда
Наконец-то дошли руки сделать то, чего хотел сделать давно - сфотографировать любимое место в финских поездах. =)
Это, конечно же, вагон-ресторан. На этой фотографии - вагон-ресторан, который цепляется, в основном, к дальним поездам. Дальние поезда обычно составляются из вагонов старого типа (внешне напоминающие наши, российские). И в старых вагонах-ресторанах, на мой взгляд, потрясающе уютно.
Нет, конечно, новые поезда (Intercity, Intercity-2) тоже удобны. Но там слишком много белого пластика.
Это, конечно же, вагон-ресторан. На этой фотографии - вагон-ресторан, который цепляется, в основном, к дальним поездам. Дальние поезда обычно составляются из вагонов старого типа (внешне напоминающие наши, российские). И в старых вагонах-ресторанах, на мой взгляд, потрясающе уютно.
Нет, конечно, новые поезда (Intercity, Intercity-2) тоже удобны. Но там слишком много белого пластика.
Городские наблюдения
Удивительно много финнов возят в колясках довольно взрослых детей. Кто-то мне по этому поводу сказал (за правдивость не ручаюсь), что для мам (или пап, хотя в основном с колясками встречаются все-таки мамы) с колясками проезд в автобусе бесплатный. Что ж, звучит похоже.
Апофеозом была сегодняшняя встреча с негритянской семьей в автобусе (в Хельсинки очень много эмигрантов из Сомали, пожалуй, даже больше, чем из России) - негритянка-мать и двое детей, девочка лет, наверное, десяти и парень лет пяти минимум. Парень, выйдя из автобуса, сел в коляску. Причем размер коляски позволял предположить, что рассчитана она если не на большую куклу, то максимум на полуторагодовалого ребенка.
Апофеозом была сегодняшняя встреча с негритянской семьей в автобусе (в Хельсинки очень много эмигрантов из Сомали, пожалуй, даже больше, чем из России) - негритянка-мать и двое детей, девочка лет, наверное, десяти и парень лет пяти минимум. Парень, выйдя из автобуса, сел в коляску. Причем размер коляски позволял предположить, что рассчитана она если не на большую куклу, то максимум на полуторагодовалого ребенка.
17.03.2006
Снова программерское: задача
Дано:
* Проект пересобирается полностью 12 минут в одной конфигурации;
* Нужна сборка в двух конфигурациях;
* Для перехода из режима отладки в режим сборки надо поменять локаль в Windows и перезагрузиться (иначе некоторые символы в релизе будут отображаться неверно; отладка с целевой локалью невозможна).
Внимание, вопрос! Какого, спрашивается,хухрена в Windows XP не реализована нормальная поддержка UNICODE, стандартизованного в июне 1992 года?
Дополнительный вопрос на пятерку: сколько раз упомянул мать какого-то Билла программист, собирающий проект?
* Проект пересобирается полностью 12 минут в одной конфигурации;
* Нужна сборка в двух конфигурациях;
* Для перехода из режима отладки в режим сборки надо поменять локаль в Windows и перезагрузиться (иначе некоторые символы в релизе будут отображаться неверно; отладка с целевой локалью невозможна).
Внимание, вопрос! Какого, спрашивается,
Дополнительный вопрос на пятерку: сколько раз упомянул мать какого-то Билла программист, собирающий проект?
15.03.2006
Программисты программистам: юмор
В рассылке обсуждали имя для нового макроса наподобие ASSERT. Последним предложением было XX_WTF*.
13.03.2006
Red Hot Chili Peppers
С неделю назад Сампо пришел, довольный, и протянул мне пакетик с семенами.
- Что это? - хмыкнул я. - Конопля?
- Нет. Семена перца чили. Мы их заказывали с месяц назад, и наконец-то нам их доставили.
Оказалось, что в результате регулярного посещения индийского ресторанчика и соревнования там, кто быстрее съест острое блюдо, возникла идея попробовать собственноручно вырастить острые перцы. (Кстати, лидер в негласном соревновании по поеданию острой пищи - Янне. У него жена - кореянка, сам он не раз был в Корее, вот и привык. А острота блюд... Пробовал я. "Ну, да. Ну, ужас. Но не ужас-ужас-ужас!")
В итоге, с какими-то приключениями через какого-то специального мужика ребята добыли семена. В тот же день принесли земли и картонных ячеек из под яиц. Засадили плантации, изгнав с солнечных пятен печатные платы.
Сегодня Сампо обнаружил первых три ростка. Весь день оживленно обсуждали. Я узнал, что, оказывается, в растение каким-то образом надо вкручивать шурупы - мол, страдая, растение дает более острые плоды. Кто-то предложил попросить Панну, нашего сэйлс-менеджера, читать растениям пресс-релизы, но потом сошлись на мнении, что это слишком жестоко.
Ждем результатов. Я уже выдвинул идею засадить землю рисом.
- Что это? - хмыкнул я. - Конопля?
- Нет. Семена перца чили. Мы их заказывали с месяц назад, и наконец-то нам их доставили.
Оказалось, что в результате регулярного посещения индийского ресторанчика и соревнования там, кто быстрее съест острое блюдо, возникла идея попробовать собственноручно вырастить острые перцы. (Кстати, лидер в негласном соревновании по поеданию острой пищи - Янне. У него жена - кореянка, сам он не раз был в Корее, вот и привык. А острота блюд... Пробовал я. "Ну, да. Ну, ужас. Но не ужас-ужас-ужас!")
В итоге, с какими-то приключениями через какого-то специального мужика ребята добыли семена. В тот же день принесли земли и картонных ячеек из под яиц. Засадили плантации, изгнав с солнечных пятен печатные платы.
Сегодня Сампо обнаружил первых три ростка. Весь день оживленно обсуждали. Я узнал, что, оказывается, в растение каким-то образом надо вкручивать шурупы - мол, страдая, растение дает более острые плоды. Кто-то предложил попросить Панну, нашего сэйлс-менеджера, читать растениям пресс-релизы, но потом сошлись на мнении, что это слишком жестоко.
Ждем результатов. Я уже выдвинул идею засадить землю рисом.
Задумчивое
...с одно из митингов (в смысле, собраний).
- Мобильный телефон на данный момент является прибором, обладающим наибольшей концентрацией хайтека в мире.
А ведь верно. Тем более, если рассматривать смартфоны с камерами-плеерами-радио.
- Мобильный телефон на данный момент является прибором, обладающим наибольшей концентрацией хайтека в мире.
А ведь верно. Тем более, если рассматривать смартфоны с камерами-плеерами-радио.
12.03.2006
Оперное
На ЛОРе появилась новость о прохождении девятой Оперой одного из тестов на соответствие броузеров вэб-стандартам. Обсуждение новости (местами просто флейм) уже перевалило за две сотни комментариев, что, в общем, нестранно - стоит кому-либо на ЛОРе похвалить/поругать Оперу/Файерфокс/FreeBSD/Linux/что-нибудь еще, как налетает толпа противников и поклонников и начинают рвать друг другу виртуальные глотки. =)
А я просто попробовал прогнать этот тест на том, что установлено дома. Кстати, особого смысла в полном соответствии вэб-стандартам, равно как и в успешном прохождении данных тестов я не вижу. ИМХО, вэб-стандарты - это как наука, для того, чтобы быть коммерчески успешным, не обязательно полностью им соответствовать.
А я просто попробовал прогнать этот тест на том, что установлено дома. Кстати, особого смысла в полном соответствии вэб-стандартам, равно как и в успешном прохождении данных тестов я не вижу. ИМХО, вэб-стандарты - это как наука, для того, чтобы быть коммерчески успешным, не обязательно полностью им соответствовать.
То, что должно получиться | ||
Opera 8.52 | ||
Internet Explorer 6.0 | ||
Internet Explorer 7 beta 2 (взято по одной из ссылок из комментариев к новости на ЛОРе) |
Method 1 | Method 2 | |
---|---|---|
C source code | void test( ) | void test( ) |
MsVC 6.0 assembly output [cl /c /O2 /Fatest.asm test.c] | _test PROC NEAR ; COMDAT | _test PROC NEAR ; COMDAT |
GCC 3.4.4 assebly output [gcc.exe -S -O3 test.c] | _test: | _test: |
Число инструкций для первого метода - 4 для обоих компиляторов. Для второго - 12, то есть в три (!!!) раза больше. Правда, из этих двенадцати три инструкции оперируют только регистрами, но, в общем, это не спасает.
Конечно, тесты довольно искусственные, но, в общем, похоже, что использование блока кода
int a, b;
...
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
...
дает значительный выигрыш по сравнению с использованием строчки
a ^= b ^= a ^= b;
И при этом памяти используется ничуть не больше.
То есть, данная строчка является не более чем программерскими понтами. =)
Кстати, реализация swap вручную дала бы выигрыш всего в одну инструкцию:
mov eax, DWORD PTR _a$[esp+4]
xchg eax, DWORD PTR _b$[esp+4]
mov DWORD PTR _a$[esp+4], eax
Подписаться на:
Сообщения (Atom)