Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


”пражнени€. 5.1. —проектируйте и проведите эксперименты дл€ оценки выигрыша в производительности, достигаемого за счет использовани€ флага HEAP_NO_SERIALIZE при вызове




5.1. —проектируйте и проведите эксперименты дл€ оценки выигрыша в производительности, достигаемого за счет использовани€ флага HEAP_NO_SERIALIZE при вызове функций HeapCreate и HeapAlloc.  ак зависит этот показатель от размера кучи и размера блока? «аметна ли разница в результатах дл€ различных версий Windows? Ќа Web-сайте книги находитс€ программа HeapNoSr.c, котора€ поможет вам приступить к выполнению этого и следующего упражнений.

5.2. »змените тестовую программу из предыдущего упражнени€ таким образом, чтобы она позвол€ла определить, генерирует ли функци€ malloc исключени€ или возвращает нулевой указатель в случае нехватки пам€ти. явл€етс€ ли обнаруженное поведение функции корректным? —равните также производительность, обеспечиваемую функцией malloc, с результатами предыдущего упражнени€.

5.3. ƒол€ накладных издержек при распределении пам€ти из кучи колеблетс€ в зависимости от используемой версии Windows, что особенно заметно в случае выход€щих из употреблени€ версий Windows 9x. —проектируйте и проведите эксперимент дл€ определени€ количества блоков пам€ти фиксированного размера, которые кажда€ из систем предоставл€ет в одной куче. »спользу€ SEH дл€ определени€ того момента, когда распределенными оказываютс€ все блоки, вы значительно упростите программу. ѕодобным образом ведет себ€ программа clear.с, наход€ща€с€ на Web-сайте книги, если игнорировать часть ее кода, ответственную за €вное тестирование ќ—. ћежду прочим, эта программа используетс€ в некоторых тестах по измерению временных характеристик дл€ гарантии того, что данные, полученные в процессе выполнении предыдущего теста, не остались в пам€ти.

5.4. ѕутем изменени€ программы sortFL (программа 5.4) создайте программу sortHP, распредел€ющую пам€ть дл€ буфера, размер которого достаточно велик, чтобы в нем уместилс€ весь файл, и выполните считывание файла в этот буфер. ќтображение файла использовать не следует. —равните производительность обеих программ.

5.5. ¬ программе 5.5 применены указатели типа _base, специфические дл€ Microsoft —. ≈сли ваш компил€тор не поддерживает это средство (но в любом случае Ч просто в качестве упражнени€) переделайте программу 5.5, использу€ дл€ генерации значений базового указател€ макрос, массив или иной механизм.

5.6. Ќапишите программу поиска записей по указанному ключу в файле, проиндексированном с применением программы 5.5. ƒл€ этой цели удобно воспользоватьс€ функцией bsearch, вход€щей в состав библиотеки —.

5.7. –еализуйте программу tail из главы 3, использу€ отображение файлов.

5.8. ѕоместите вспомогательные функции ReportError, PrintStrings, PrintMsg и ConsolePrompt в DLL и перекомпонуйте некоторые из программ, с которыми мы работали раньше. ѕроделайте то же самое с функци€ми Options и GetArgs, предназначенными, соответственно, дл€ обработки параметров командной строки и аргументов. ¬ажно, чтобы как вспомогательна€ DLL, так и вызывающа€ программа использовали также и библиотеку — в виде DLL. Ќапример, в Visual C++ и Visual Studio 6.0 выберите, начав со строки главного меню, следующие команды: Project (ѕроект), Settings (ѕараметры), вкладку C/C++, Category (Code Generation) ( атегори€ (√енераци€ кода)), Use Run-Time Library (Multithreaded DLL) (»спользовать библиотеку времени выполнени€ (многопоточна€ DLL)). «аметьте, что библиотеки DLL, вообще говор€, должны обеспечивать многопоточную поддержку, поскольку они будут использоватьс€ потоками нескольких процессов. ѕример возможного решени€ содержитс€ в проекте Utilities_3_0, доступном на Web-сайте книги.

5.9. »змените программу 5.7 таким образом, чтобы решение относительно того, какую DLL следует использовать, базировалось на размере файла и конфигурации системы..LIB-файл здесь не требуетс€, поэтому продумайте, как отменить его генерацию. ƒл€ определени€ типа файловой системы используйте функцию GetVolumeInformation.

5.10. —оздайте дополнительные DLL дл€ функции преобразовани€ из предыдущего упражнени€, кажда€ верси€ которых использует иную методику обработки файлов, и расширьте вызывающую программу таким образом, чтобы она сама решала, когда и какую версию использовать.






ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-09-20; ћы поможем в написании ваших работ!; просмотров: 640 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ћюди избавились бы от половины своих непри€тностей, если бы договорились о значении слов. © –ене ƒекарт
==> читать все изречени€...

2193 - | 1989 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.031 с.