这是我无法解释的非常奇怪的事情,但可能你们中的一些人已经发现了相同或类似的问题?
想象一下下面的伪 PHP 代码:
<?PHP
mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("mydb");
$result = mysql_query("SELECT id, my_name FROM my_table");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
$row[1] ? echo $row[1] : echo $row[0];
}
mysql_free_result($result);
?>
这基本上只是查询 mySQL 服务器并遍历所有记录集。然后它使用“速记” if 语句来确定 column 中是否有内容my_name
。如果有,它将打印它,如果没有,它将打印id
代替。
现在奇怪的部分是,在 Debian Linux 虚拟机上,在 ESX5 上运行,这个速记 if 比普通if{}else{}
语句长 10 倍。
因此,在我的例子中(迭代 5000 条记录)不是 3 秒,而是在这个特定的 VM 上需要 30 秒 - ESX4 Debian 主机上的相同代码运行得很好。
如果我用普通的 IF 语句替换速记 IF,一切都很好。
我在互联网上做了一些研究,但找不到解释。您将从哪里开始搜索问题?
谢谢!// 马库斯