- Модуль: perfmon
- Путь к файлу: ~/bitrix/modules/perfmon/classes/general/measure.php
- Класс: CPerfomanceMeasure
- Вызов: CPerfomanceMeasure::GetDBMark
static function GetDBMark($type)
{
global $DB;
$res = array();
switch ($type)
{
case "read":
$strSql = "select * from b_perf_test WHERE ID = #i#";
$bFetch = true;
break;
case "update":
$strSql = "update b_perf_test set REFERENCE_ID = ID+1, NAME = '".str_repeat("y", 200)."' WHERE ID = #i#";
$bFetch = false;
break;
default:
$DB->Query("truncate table b_perf_test");
$strSql = "insert into b_perf_test (REFERENCE_ID, NAME) values (#i#-1, '".str_repeat("x", 200)."')";
$bFetch = false;
}
for ($j = 0; $j < 4; $j++)
{
$s1 = microtime(true);
for ($i = 0; $i < 100; $i++)
{
$sql = str_replace("#i#", $i, $strSql);
}
$e1 = microtime(true);
$N1 = $e1 - $s1;
$s2 = microtime(true);
for ($i = 0; $i < 100; $i++)
{
//This is one op
$sql = str_replace("#i#", $i, $strSql);
$rs = $DB->Query($sql);
if ($bFetch)
$rs->Fetch();
}
$e2 = microtime(true);
$N2 = $e2 - $s2;
if ($N2 > $N1)
{
$res[] = 100 / ($N2 - $N1);
}
}
if (count($res))
{
return array_sum($res) / doubleval(count($res));
}
}