Статус
нашего
сайта:
ICQ Secrets Center is Online  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


Таненбаум Э.- Архитектура компьютера. стр.398

Таблица 7.1. Сравнение программирования на ассемблере и языке высокого уровня

 

Время программирования, человеко-лет

Время выполнения программы, с

Язык ассемблера

Язык высокого уровня

Смешанный подход до подстройки

 

Критические 10 %

Остальные 90 %

Всего

Смешанный подход после подстройки

 

Критические 10 %

Остальные 90 %

Всего

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

Предположим, что 10 % программы отвечает за 90 % времени ее выполнения. Это значит, что из 100 секунд работы 90 секунд выполняется десятая часть программы, а 10 секунд — оставшиеся 90 %. Эти 10 % программы можно усовершенствовать, переписав на ассемблере. Этот процесс называется подстройкой (tuning). На подстройку основных процедур потребуется еще 5 человеко-лет, но время выполнения программы сократится с 90 до 30 секунд.

Сравним этот смешанный подход, когда используются и ассемблер, и язык высокого уровня, с подходом, в котором применяется только язык ассемблера (см. табл. 7.1). При втором подходе программа работает примерно на 20 % быстрее (33 секунды против 40), но более чем за тройную цену (50 человеко-лет против 15). Более того, у смешанного подхода есть еще одно преимущество: гораздо проще переписать на ассемблер уже отлаженную процедуру, написанную на языке высокого уровня, чем писать эту процедуру на ассемблере «с нуля». Отметим, что, если бы написание программы занимало ровно 1 год, соотношение между

смешанным подходом и подходом, при котором используется только язык ассемблера, составляло бы 4:1 в пользу смешанного подхода.

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

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

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


⇐ Предыдущая страница| |Следующая страница ⇒

.