Ответов: 12 Просмотров: 970
|
dXdYdZ пишет:Ну, потому что, если бы я писал сравнение строк на asm или на C++, то я сравнивал бы их в цикле именно посимвольно. А как ещё можно сравнить 2 строки?
...
А функция strcmp их в конечном итоге (откомпилированная в машинном коде) сравнивает не посимвольно разве?
Или по 4 (32 разрядные) - 8(64) байт.
Ещё во времена MS DOS были команды CMPS и SCAS для сравнения и поиска строк - это намного быстрее, чем писать цикл. А сейчас есть, напр., http://ru[dot]wikipedia[dot]org/wiki/SSE4 .
Более того, процессоры до того дошли, что умеют определять, нужны ли ассемблерной команде результаты предыдущей. И выполняют несколько последовательных команд одновременно, если они не зависят от результатов друг друга. Вот тут товарищ интересно и доступно про оптимизацию пишет
http://www[dot]agner[dot]org/optimize/
И особо оптимизированные библиотечки там есть.
(А, теоретически, все современные компиляторы, интерпретаторы и стандартные библиотечки должны всем этим пользоваться...) |