...с одно из митингов (в смысле, собраний).
- Мобильный телефон на данный момент является прибором, обладающим наибольшей концентрацией хайтека в мире.
А ведь верно. Тем более, если рассматривать смартфоны с камерами-плеерами-радио.
13.03.2006
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)