Я думаю, что люди действительно переоценивают стоимость производительности выдавания исключения. Да, существует хит производительности, но это является относительно крошечным.
я запустил следующий тест, бросив и ловя миллион исключений. Потребовалось приблизительно 20 секунд на моем Core 2 Duo Intel , 2.8 GHz. Это - о 50K исключениях секунда. При броске даже небольшой части этого у Вас есть некоторые проблемы архитектуры.
Вот мой код:
using System;
using System.Diagnostics;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < 1000000; i++)
{
try
{
throw new Exception();
}
catch {}
}
Console.WriteLine(sw.ElapsedMilliseconds);
Console.Read();
}
}
}
Вы можете отключить Xdebug- var_dump ()
-overloading, установив для xdebug.overload_var_dump
значение false
. Затем вы можете использовать var_dump ()
, когда вам не нужно дополнительное HTML-форматирование, и xdebug_var_dump ()
, когда вам требуется полностью отформатированный вывод отладки.
Но, как я уже писал, в моем комментарии выше, если вы используете FirePHP , вы можете просто позволить FirePHP отформатировать вывод в консоли Firebug:
fb($variable, FirePHP::DUMP) // or
FB::dump('Key', $variable) // or
$firephp->dump('Key', $variable); // where $firephp is your FirePHP instance
ini_set('xdebug.overload_var_dump', 0);
не работает с моей установкой.
Но я могу сделать это, чтобы подавить HTML:
ini_set('html_errors', 0);