Массив против JSON в PHP? [Дубликат]

серьезно, вы должны начать изучать что-то еще. Это не шутка. DOS (cmd.exe) серьезно не имеет возможности манипулирования датами и многих других недостатков. Ниже приведена следующая лучшая альтернатива, предусмотренная, помимо DOS, vbscript

  Установить objFS = CreateObject ("Scripting.FileSystemObject") Установить objArgs = WScript.Arguments strFile1 = objArgs (0) strFile2 = objArgs (1  ) Установить objFile1 = objFS.GetFile (strFile1) Установить objFile2 = objFS.GetFile (strFile2) Если objFile1.DateLastModified & lt;  objFile2.DateLastModified Затем WScript.Echo «File1:» & amp; strFile1 & amp; »старше, чем« & amp; strFile2 Else WScript.Echo »File1:« & amp; strFile1 & amp; »новее, чем« & amp; strFile2 End If  [  ! d5] 

запустите его в командной строке

  C: \ test & gt; dir Громкость на диске C не имеет метки.  Объемный серийный номер 08AC-4F03 Справочник C: \ test 11/06/2009 07:40 PM & lt; DIR & gt;  ,  11/06/2009 07:40 PM & lt; DIR & gt;  .. 11/06/2009 06:26 PM 135 file 11/02/2009 04:31 PM 4,516 m.txt C: \ test & gt; cscript / nologo test.vbs файл m.txt Файл1: файл новее, чем m.txt   

Конечно, в новых версиях окон вы можете попробовать Powershell ...

114
задан Yi Jiang 28 November 2011 в 05:59
поделиться

9 ответов

Если вы действительно хотите сравнить реальный код мира, используйте такие инструменты, как Xdebug и XHProf .

Xdebug отлично подходит, когда вы работаете в dev / staging, а XHProf - отличный инструмент для производства, и безопасно запускать его там (пока вы читаете инструкции). Результаты любой загрузки одной страницы не будут столь же важны, как просмотр того, как ваш код работает, пока сервер забивается, чтобы сделать миллион других вещей, а ресурсы становятся скудными. Возникает еще один вопрос: неудобны ли вы в CPU? ОЗУ? I / O?

Вам также нужно смотреть за кодом, который вы используете в своих сценариях, на то, как ваши скрипты / страницы обслуживаются. Какой веб-сервер вы используете? В качестве примера я могу сделать nginx + PHP-FPM серьезным образом выполнить mod_php + Apache, который, в свою очередь, получает работу за статический контент, используя хороший CDN.

Следующее, что нужно учитывать, это то, что вы пытаясь оптимизировать?

  • Является ли скорость, с которой страница отображает в браузере пользователей приоритет номер один?
  • Получает каждый запрос на сервер, отбрасываемый как можно быстрее с наименьшим CPU потребляет цель?

Первому может помочь выполнение таких вещей, как gzipping всех ресурсов, отправленных в браузер, но это может (в некоторых случаях) оттолкнуть вас дальше от достижения последний.

. Надеемся, что все вышеперечисленное может помочь показать, что тщательно изолированное «лабораторное» тестирование не будет отражать переменные и проблемы, с которыми вы столкнетесь в процессе производства, и что вы должны определить, какова ваша цель на высоком уровне и то что вы можете сделать, чтобы добраться туда, прежде чем отправиться в маршрут микро / досрочной оптимизации в ад .

115
ответ дан Community 15 August 2018 в 15:46
поделиться
  • 1
    спасибо за объяснение, это помогло понять, спасибо – eric 7 December 2011 в 02:04
  • 2
    Если это действительно отвечает на ваш вопрос eric, я чувствую, что ваши вопросы были сформулированы неправильно (или, может быть, я просто прочитал это неправильно). Основываясь на вашем вопросе, это звучало так, будто вы хотели изолировать разные способы делать то же самое в PHP и определить, какой из них самый быстрый. Однако, основываясь на ответах, которые вы приняли и дали щедрость, кажется, вы больше заинтересованы в проведении нагрузочного тестирования всего веб-стека - что-то совершенно другое. – Alec Gorge 7 December 2011 в 02:21
  • 3
    вы, вероятно, читаете его мысли! – Book Of Zeus 7 December 2011 в 13:31
  • 4
    Xdebug не поддерживает сценарии с кодировкой Ioncube. Как вы скажите этот сценарий? – BigSack 20 August 2013 в 09:04
  • 5
    @BigSack Ты вроде как сам по себе, я никогда не пробовал профилировать что-нибудь, что обфускалось так. Сначала у меня был бы выстрел с XHProf, так как это относительно легко стало работать. Вы можете обнаружить, что IonCube полностью взаимодействует с любым профилировщиком, отличным от пользователя. – James Butler 20 August 2013 в 11:11

Поместите его в цикл for, чтобы сделать каждую вещь 1 000 000 раз, чтобы получить более реалистичное число. И только запустите таймер непосредственно перед кодом, который вы на самом деле хотите проверить, а затем запишите конечное время сразу (т. Е. Не запускайте таймер перед session_start().

Также убедитесь, что код идентичен

Как выполняется сценарий (cronjob, php из командной строки, Apache и т. д.) не должны иметь значения, поскольку вы являетесь только время относительное различие между скоростью различных функций.Таким образом, это соотношение должно оставаться неизменным.

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

3
ответ дан Alasdair 15 August 2018 в 15:46
поделиться

Вы хотите посмотреть Xdebug и, более конкретно, возможности профилирования Xdebug .

В принципе, вы включаете профилировщик и каждый раз, когда вы загружать веб-страницу, он создает файл cachegrind, который может быть прочитан с помощью WinCacheGrind или KCacheGrind .

Xdebug может быть немного сложнее настроить, так что соответствующий раздел моего php.ini для справки:

[XDebug]
zend_extension = h:\xampp\php\ext\php_xdebug-2.1.1-5.3-vc6.dll
xdebug.remote_enable=true
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=h:\xampp\cachegrind
xdebug.profiler_output_name=callgrind.%t_%R.out

И вот скриншот файла .out в WinCacheGrind :

enter image description here [/g5]

Это должно предоставить подробные сведения о том, насколько эффективен ваш PHP-скрипт. Вы хотите настроить таргетинг на то, что занимает больше времени. Например, вы можете оптимизировать одну функцию за половину времени, но ваши усилия будут лучше обслуживать, оптимизируя функцию, которая называется десятками, если не сотни раз во время загрузки страницы.

Если вы Любопытно, что это просто старая версия CMS, которую я написал для моего собственного использования.

25
ответ дан Alec Gorge 15 August 2018 в 15:46
поделиться
  • 1
    кажется очень сложным, я ничего не понимаю – eric 4 December 2011 в 04:48
  • 2
    Какую часть вы не понимаете? Настройка или анализ данных? – Alec Gorge 4 December 2011 в 05:12
  • 3
    ну настройки нет, что никогда не будет работать на моем сервере, но данные, все его маленькие ящики не могут читать – eric 4 December 2011 в 05:14
  • 4
    потому что я не использую окна – eric 4 December 2011 в 05:24
  • 5
    +1 для XDebug + KCacheGrind. Это действительно полезно и удивительно легко установить и использовать. Я использовал его в течение некоторого времени, дополнительный бонус, который вы получаете, - вы станете его знакомым, вы можете использовать KCacheGrind с Valgrind (+ memgrind / callgrind), чтобы профилировать гораздо больше других языков (и не только время процессора). – XzKto 5 December 2011 в 09:54

Чтобы проверить, как быстро ваш полный скрипт работает на сервере, есть множество инструментов, которые вы можете использовать. Сначала убедитесь, что ваш сценарий (например, preg_match vs strpos) должен выдавать те же результаты, чтобы квалифицировать ваш тест.

Вы можете использовать:

71
ответ дан Caleb 15 August 2018 в 15:46
поделиться
  • 1
    спасибо за ссылки очень полезно – eric 4 December 2011 в 05:25
  • 2
    вы очень приветствуетесь – Book Of Zeus 5 December 2011 в 02:44
  • 3
    эти инструменты очень полезны, не только он тестировал мой скрипт, но и мой сервер и многое другое. это помогло улучшить мой сайт, поэтому вы снова получили мою +100 – eric 7 December 2011 в 02:05
  • 4
    Я рад, что это помогло – Book Of Zeus 7 December 2011 в 02:09
  • 5
    Черт тебя @BookOfZeus, что моя милость! (только шутки, хороший набор ссылок, скорее хотелось бы, если бы я поместил часть этого материала в мой ответ) – James Butler 7 December 2011 в 11:56

Попробуйте https://github.com/fotuzlab/appgati

Он позволяет определять шаги в коде и время отчетов, использование памяти, загрузку сервера и т. д. между двумя шагами .

Что-то вроде:

    $appgati->Step('1');

    // Do some code ...

    $appgati->Step('2');

    $report = $appgati->Report('1', '2');
    print_r($report);

Пример массива вывода:

Array
(
    [Clock time in seconds] => 1.9502429962158
    [Time taken in User Mode in seconds] => 0.632039
    [Time taken in System Mode in seconds] => 0.024001
    [Total time taken in Kernel in seconds] => 0.65604
    [Memory limit in MB] => 128
    [Memory usage in MB] => 18.237907409668
    [Peak memory usage in MB] => 19.579357147217
    [Average server load in last minute] => 0.47
    [Maximum resident shared size in KB] => 44900
    [Integral shared memory size] => 0
    [Integral unshared data size] => 0
    [Integral unshared stack size] => 
    [Number of page reclaims] => 12102
    [Number of page faults] => 6
    [Number of block input operations] => 192
    [Number of block output operations] => 
    [Number of messages sent] => 0
    [Number of messages received] => 0
    [Number of signals received] => 0
    [Number of voluntary context switches] => 606
    [Number of involuntary context switches] => 99
)
15
ответ дан fotuzlab 15 August 2018 в 15:46
поделиться
  • 1
    Прекрасный дизайн интерфейса (как я вижу, вы автор), grats! (И спасибо за использование имен методов «ProperCase»;) (например, SetMemory()) вместо уродливого, но все же вездесущего mixedCase() дерьма, который практически не имеет смысла в PHP. Ты, наверное, слишком старый. ;)) – Sz. 15 March 2017 в 23:55

Хорошим началом является использование xdebugs profiler http://xdebug.org/docs/profiler

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

1
ответ дан goat 15 August 2018 в 15:46
поделиться

Также полезно следить за кодом PHP и перекрестно проверять эту ссылку , чтобы убедиться, что ваша кодировка не нарушает производительность приложения.

0
ответ дан Ritesh Aryal 15 August 2018 в 15:46
поделиться

Эрик,

Вы задаете себе неправильный вопрос. Если ваш скрипт исполняется в ~ 15 мсек, тогда его время в значительной степени не имеет значения. Если вы запускаете совместную службу, тогда активация изображения PHP займет ~ 100 мсек, чтение в файлах сценариев ~ 30-50 мсек при полной кешировании на сервере, возможно, 1 или более секунд при загрузке с фермы NAS на сервере. Задержки сети при загрузке мебели страницы могут добавить много секунд.

Основной проблемой здесь является восприятие пользователями времени загрузки: сколько времени он или она должен ждать между нажатием на ссылку и получением полностью отображаемой страницы. Посмотрите страницу Google Page Speed ​​, которую вы можете использовать как расширение Ff или chrome, и документацию Pagespeed, в которой подробно обсуждается, как добиться хорошей производительности страницы. Следуйте этим рекомендациям и постарайтесь улучшить показатели своей страницы, чем 90/100. (Главная страница google оценивает 99/100, как и мой блог). Это лучший способ получить хорошую пользовательскую производительность.

0
ответ дан TerryE 15 August 2018 в 15:46
поделиться

Я посмотрю на xhprof . Не имеет значения, запущен ли он в кли или через другой sapi (например, fpm или fcgi или даже модуль Apache).

Лучшая часть xhprof состоит в том, что она даже достаточно подходит для запуска в производстве , Что-то, что не работает с xdebug (последний раз я проверил). xdebug влияет на производительность и xhprof (я бы не сказал, что их нет) управляет намного лучше.

Мы часто используем xhprof для сбора образцов с реальным трафиком, а затем анализируем код оттуда.

На самом деле это не показатель производительности, который дает вам время и все такое, хотя оно и делает это. Это просто упрощает анализ производственного трафика, а затем разворачивается до уровня функции php в собранном callgraph.

После того, как расширение скомпилировано и загружено, вы начинаете профилирование в коде с помощью:

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

Чтобы остановить:

$xhprof_data = xhprof_disable();

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

Код в github содержит папку xhprof_html, которую вы выгружаете

HTH!

7
ответ дан Till 15 August 2018 в 15:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: