У меня есть простая программа, которая разбивает набор данных (файл CSV) на 4 блока, считывает каждый блок, выполняет некоторые вычисления и затем добавляет результат вместе. Думайте об этом как о простой операции уменьшения карты. При обработке одного фрагмента используется около 1 ГБ памяти. Я запускаю программу на четырехъядерном ПК с 4 ГБ оперативной памяти, работающей под управлением Windows XP. Я случайно закодировал это, используя R, но я не думаю, что это актуально.
Я кодировал две версии. Одна версия обрабатывает каждый кусок в последовательности. Другая версия обрабатывает куски по два одновременно. Обе версии требуют почти одинакового времени для завершения.
При каких обстоятельствах вы ожидаете увидеть этот результат производительности?
Моя текущая гипотеза состоит в том, что процессы ограничены производительностью памяти, но я не знаю лучшего способа исследовать это дальше. Любые предложения или догадки?
Редактировать: Программа не связана с вводом-выводом с точки зрения диска. Этап обработки считывает кусок файла CSV в память, перемешивает его в течение 5 минут или около того, а затем записывает результат обратно в файл на диске. Ввод и вывод файла занимает не более нескольких секунд.