2014-12-22 3 views
4

Я попытался использовать различные методы кеширования в разделе 4.2.1 руководства PHPExcel.Самый низкий метод кэширования памяти для PHPExcel

сделал тест с 100к строк и вот результаты

gzip = time=50,memoryused=177734904 
ser = time=34,memoryused=291654272 
phptm= time=41,memoryused=325973456 
isamm= time=39,memoryused=325972824 

руководство говорит, что phptmp и isamm методы используют диск вместо памяти. Следовательно, они должны использовать наименьшую память, но, похоже, это было наоборот.

Вот код, который я использовал для теста:

   $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip; 
//    $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized; 
//    $cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp; 
//   $cacheSettings = array('memoryCacheSize' => '8MB');    
//    $cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_discISAM; 

       PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); 

       $xlsReader = PHPExcel_IOFactory::createReader($fileType); 
       $xlsReader->setReadDataOnly(true); 

Любой человек может пролить свет на эту тайну?

ответ

6

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

Однако все методы сохраняют некоторую информацию о каждой ячейке памяти, за исключением SQLite, поэтому использование базы данных SQLite является наиболее эффективным с точки зрения памяти вариантом.

EDIT

Я провел несколько тестов с различными методами кэширования против различных версий PHP несколько месяцев назад, и Ниже представлены результаты

enter image description here

enter image description here

Эти все еще довольно произвольный результат, скорость диска и другие факторы влияют на производительность для некоторых методов кеширования, таких как di scisam и phptemp, и любые настройки конфигурации для таких параметров, как phptemp, также окажут некоторое влияние; но он должен дать относительное руководство для разработки, какие варианты лучше для памяти, и которые лучше для скорости выполнения.

+0

Как правило, для серверов, которые не заботятся о времени выполнения, но имеют ограничения по памяти, вы бы рекомендовали использовать SQLite3 как лучший вариант? – Gonzalingui

+1

Где SQLite3 является опцией, а память является проблемой (и медленная скорость выполнения не является проблемой), то да, я бы рекомендовал использовать кеширование SQLite3 –

Смежные вопросы