Книга: UNIX: разработка сетевых приложений
Сравнение времени выполнения различных версий функции str_cli
Сравнение времени выполнения различных версий функции str_cli
Итак, мы продемонстрировали четыре различных версии функции str_cli
. Для каждой версии мы покажем время, которое потребовалось для ее выполнения, в том числе и для версии, использующей программные потоки (см. листинг 26.1). В каждом случае было скопировано 2000 строк от клиента Solaris к серверу с периодом RTT, равным 175 мс:
? 354,0 с, режим остановки и ожидания (см. листинг 5.4);
? 12,3 с, функция select
и блокируемый ввод-вывод (см. листинг 6.2);
? 6,9 с, неблокируемый ввод-вывод (см. листинг 16.1);
? 8,7 с, функция fork
(см. листинг 16.6);
? 8,5 с, версия с потоками (см. листинг 26.1).
Наша версия с неблокируемым вводом-выводом почти вдвое быстрее версии, использующей блокируемый ввод-вывод с функцией select
. Наша простая версия с применением функции fork
медленнее версии с неблокируемым вводом- выводом. Тем не менее, учитывая сложность кода неблокируемого ввода-вывода по сравнению с кодом функции fork
, мы рекомендуем более простой подход.
- 16.2. Неблокируемые чтение и запись: функция str_cli (продолжение)
- Права для выполнения резервного копирования
- Совместимость клиентов и серверов различных версий
- Класс StreamReader
- Уменьшение времени, необходимого для резервного копирования и восстановления
- Ограничение времени ожидания для транзакций (Lock timeout)
- Аргументы функции в Python
- Упражнения для самостоятельного выполнения
- 3. Функции
- Новые функции API для работы с Blob и массивами
- SERVER CLIENT MAPPING
- 8.1.4. Сравнение массивов