Предлагаемый способ совместим с Xcode 8.3 и Xcode 9 , который поддерживает Swift 3 и Swift 4
let colorSpace = CGColorSpaceCreateDeviceRGB()
guard let bitmapContext = CGContext(data: nil,
width: Int(size.width),
height: Int(size.height),
bitsPerComponent: Int(bitsPerComponent),
bytesPerRow: Int(bytesPerRow),
space: colorSpace,
bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue) else {
return nil
}
Во-первых, есть xdebug , в котором есть профилировщик, но я бы не стал использовать его на производственной машине, поскольку он вводит код и увеличивает скорость до ползания. . Тем не менее, это очень хорошо для тестовых сред.
Если вы хотите измерить скорость в продуктивной среде, я бы просто измерял вручную. microtime ()
- это функция для этих вещей в PHP. Предположим, у вас есть header.php и footer.php, которые вызываются всеми сценариями php:
# In your header.php (or tpl)
$GLOBALS['_execution_start'] = microtime(true);
# In your footer.php (or tpl)
file_put_contents(
'/tmp/my_profiling_results.txt',
microtime(true) - $GLOBALS['_execution_start'] . ':' . print_r($_SERVER, true) . "\n",
FILE_APPEND
);
Вы можете заключить свои сценарии в простой таймер, например:
/*in your header or at the top of the page*/
$time_start = microtime(true);
/* your script goes here */
/*in your footer, or at the bottom of the page*/
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "It took $time seconds\n";
Обратите внимание, что добавятся два выполнения функций и небольшой кусочек математики в качестве накладных расходов.
Не могли бы вы зарегистрировать функцию выключения, которая вызывает окончание таймера? http://us3.php.net/register_shutdown_function Таким образом, вам нужно будет запускать таймер только там, где, по вашему мнению, может быть проблема.
как насчет auto_prepend_file и auto_append_file, только что написал об этом сообщение http://blog.xrado.si/post/php-slow-log