Статус нашего сайта: |
ICQ Information Center |
ICQ SHOP 5-значные 6-значные 7-значные 8-значные 9-значные Rippers List ОПЛАТА СТАТЬИ СЕКРЕТЫ HELP CENTER OWNED LIST РОЗЫСК!New! ICQ РЕЛИЗЫ Протоколы ICQ LOL ;-) Настройка компьютера Аватарки Смайлики СОФТ Mail Checkers Bruteforces ICQTeam Soft 8thWonder Soft Other Progs ICQ Patches Miranda ICQ ФорумАрхив! ВАШ АККАУНТ ICQ LiveJournal
РекламаНаш канал:irc.icqinfo.ru |
Таненбаум Э.- Архитектура компьютера. стр.398
Так как только крошечная часть программы отвечает за большую часть времени выполнения этой программы, возможен другой подход. Сначала программа пишется на языке высокого уровня. Затем проводится ряд измерений, чтобы определить, какие части программы по большей части сказываются на времени выполнения. Для таких измерений обычно используется системный тактовый генератор. С его помощью можно узнать, сколько времени выполняется каждая процедура, сколько раз выполняется каждый цикл и т. п. Предположим, что 10 % программы отвечает за 90 % времени ее выполнения. Это значит, что из 100 секунд работы 90 секунд выполняется десятая часть программы, а 10 секунд — оставшиеся 90 %. Эти 10 % программы можно усовершенствовать, переписав на ассемблере. Этот процесс называется подстройкой (tuning). На подстройку основных процедур потребуется еще 5 человеко-лет, но время выполнения программы сократится с 90 до 30 секунд. Сравним этот смешанный подход, когда используются и ассемблер, и язык высокого уровня, с подходом, в котором применяется только язык ассемблера (см. табл. 7.1). При втором подходе программа работает примерно на 20 % быстрее (33 секунды против 40), но более чем за тройную цену (50 человеко-лет против 15). Более того, у смешанного подхода есть еще одно преимущество: гораздо проще переписать на ассемблер уже отлаженную процедуру, написанную на языке высокого уровня, чем писать эту процедуру на ассемблере «с нуля». Отметим, что, если бы написание программы занимало ровно 1 год, соотношение между смешанным подходом и подходом, при котором используется только язык ассемблера, составляло бы 4:1 в пользу смешанного подхода. В то же время программисту, пишущему на языке высокого уровня, не нужно задумываться о перемещении отдельных битов, поэтому он может осмысливать задачу в целом, и иногда ему так удается построить программу, что он добивается реального повышения производительности. Такая ситуация обычно не характерна для программистов, пишущих на ассемблере, — как правило, они возятся с отдельными командами, пытаясь сэкономить несколько циклов. Как бы то ни было, существует по крайней мере 4 веские причины для изучения ассемблера. Во-первых, желательно уметь писать программы на ассемблере, поскольку успех или неудача большого проекта иногда зависит от того, удастся или нет в несколько раз повысить быстродействие единственной, но важной процедуры. Во-вторых, обращение к ассемблеру может быть единственно возможным выходом в случае нехватки памяти. Смарт-карты, например, содержат центральный процессор, но лишь у некоторых из них есть хотя бы мегабайт памяти и уж совсем единицы имеют жесткий диск для разбиения на страницы. Однако при таких ограниченных ресурсах они должны выполнять сложные вычисления. Процессоры, встроенные в электроприборы, часто имеют минимальный объем памяти, поскольку они должны быть достаточно дешевыми. Столь же незначительным объемом памяти обычно оснащаются различные электронные устройства, работающие на батарейках, поскольку им нужен компактный, но эффективный код. |