Проблема:

Недавно я работал с довольно большими наборами данных.

Тем не менее, Excel, кажется, обрабатывает их очень медленно (требуется всего 3-5 минут, чтобы открыть или сохранить файл).

Детали электронной таблицы

  • Рядов: 50000
  • Колонны: 90
  • Рабочие листы: 1
  • Размер файла: 157 МБ.

Лист состоит из чистых данных. Формулы или сценарий VBA еще не добавлены. Нет ссылок на ячейки (например, = H3) или массивов.

Технические характеристики:
Office 2010 32 бит
Процессор: i7 3.4 GHZ Quad Core
Рам: 6 Гб
Windows 7

Шаги, предпринятые до настоящего времени

Я попытался сохранить его как двоичный файл Excel (.xlsb), что немного помогло (и немного уменьшило размер файла).

Тем не менее, 50 000 строк не достигают предела Excel 2010 (который составляет 1 048 576 строк), но все же это очень медленно. Я также помню, что старые версии Excel могли обрабатывать большие объемы данных относительно быстро.

Есть ли способ ускорить Excel?

2 ответа2

0

Я решил попытаться максимально точно подражать вашему сценарию. Для этого я:

  • создал электронную таблицу MS Excel с 50000 строк и 90 столбцов данных (к счастью, я работаю с большими наборами данных, так что это не так уж сложно сделать)
  • Убедитесь, что данные представляют собой смесь форматов: текст, даты, номер и общие
  • не использовал никаких формул или кода VBA

Тем не менее, для меня эта таблица была размером всего 24 МБ, что составляет всего около 15% от вашего размера, поэтому я не могу объяснить это.

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

  • 7,68 секунд, чтобы сохранить данные на локальный жесткий диск
  • 3 минуты 53 секунды для сохранения данных на сетевой диск
  • 10,4 секунды, чтобы открыть данные с локального диска
  • 50,43 секунды, чтобы открыть данные с сетевого диска

Теперь, поскольку мои 50 000 строк и 90 столбцов данных занимали только 24 МБ, мои данные, очевидно, потребуют гораздо меньше времени для сохранения и загрузки, чем ваш файл 157 МБ (который примерно в 6,5 раз больше).

Однако, как вы можете видеть, скорость открытия и сохранения файлов определяется не самим размером файла. Работа с SSD намного быстрее, чем с локальным жестким диском, который, в свою очередь, намного быстрее, чем сетевой диск. Кроме того, тип сети оказывает огромное влияние на скорость передачи данных (например, Gigabit Ethernet намного быстрее, чем быстрый Ethernet).

К сожалению, ближайший компьютер, который я смог найти для этого теста, имел следующие характеристики:

  • Windows 7 Enterprise (64-разрядная версия)
  • i5 2.6 ГГц
  • 8 ГБ ОЗУ
  • MS Excel 2010 (32-разрядная версия)

Резюме

В двух словах:

  • Есть много факторов, которые влияют на скорость чтения / записи, не только объем данных, но также ваше аппаратное и / или сетевое окружение
  • Лучшим тестом было бы выяснить, сколько времени понадобится Excel для того, чтобы реально обработать ваши данные, а не скорость чтения / записи.
  • Другим фактором в случае Excel является то, загружаете ли вы какие-либо надстройки и т. д. и где они находятся
  • ваши данные имеют размер 157 МБ, что в 6,5 раз больше размера моей электронной таблицы, также содержащей 4,5 миллиона ячеек данных (так, что объясняет это?)
  • установить больше оперативной памяти (я работал с большими наборами данных в Excel - Windows и Mac - в течение почти двух десятилетий, и самый большой фактор производительности Excel - это объем установленной оперативной памяти
  • с 4,5 миллионами ячеек данных вам может понадобиться пересмотреть, будет ли база данных лучше удовлетворять ваши потребности
0

Электронная таблица определенно не подходит для обработки большого набора данных, потому что ячейка загружается как объект в память (очень неэффективный способ).

Вы можете использовать формат CSV (или TSV) для своих данных и использовать специальные инструменты для управления ими. Такие как open-уточнение или GNU awk и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .