Мне нужно, чтобы мой клиент скачал 30 Мб файлов.
Ниже приводится настройка.
Я не видел много случаев, когда клиент загружал такое большое количество файлов, что, как я подозреваю, связано с доступом к файлам на стороне сервера.
Меня также беспокоит, что мультиплексор (select / epoll) будет перегружен из-за чрезмерной обработки сетевых запросов. (Мне нужно об этом беспокоиться?)
С указанными выше подозрениями я застегнулся 3000 файлов до 30 файлов. (общий размер не сильно меняется, потому что файлы уже являются сжатыми (png))
Тест показывает,
загрузка 3000 файлов на 25% быстрее, чем загрузка и распаковка 30 файлов.
Я подозреваю, что это связано с тем, что клиентское устройство не может загрузить при распаковке и вставке в БД, я тестирую на портативных устройствах .. iPhone ..
(Я подключил разархивирование + операция БД отдельно от сетевого кода, но операция БД, похоже, берет на себя всю систему. Я немного профилировал, и разархивирование не занимает много времени, вставка БД делает. На стороне сервера файлы архивируются и помещаются в память заранее .)
Я собираюсь вернуться к загрузке 3000 файлов, потому что это быстрее для клиентов.
Интересно, что скажут другие опытные сетевые специалисты по двум стратегиям,
1. много небольших данных
2. небольшое количество больших данных и распаковка.
Для опытных разработчиков iphone: я распределяю операцию БД с помощью NSOperationQueue.
Действительно ли NSOperationQueue хорошо справляется с потоками?
Я очень подозрительно отношусь к его производительности.
- Я пробовал использовать поток posix, разницы нет ..