我想问一下这个问题。在执行正则表达式搜索和替换功能时使用javascript或PHP的效率有何不同?
如果我要开发一个网站,两种语言都可以执行相同的功能,但我只是好奇通常是专业网站开发人员使用的。
我想知道何时使用javascript或PHP的标准,如果两者都可以执行相同的操作。
Javascript var result = str.replace();
PHP preg_replace();
答案 0 :(得分:5)
在这种情况下,这不是性能问题,而是 你要做的替换。如果您想在客户端执行某些操作,请使用JavaScript。如果你想在服务器端进行,你可以使用PHP。
另外:如果您可以选择(比如,不是在PHP中进行替换然后回显它,只是在客户端用JavaScript替换),我会使用JavaScript,因为用户的浏览器可以完成这项工作而不是您的服务器,因此它会减少服务器负载。但是,只要你每分钟有数千次替换或类似的事情,这才有意义。
答案 1 :(得分:1)
答案很可能取决于它的原始性能。例如,让我们假设如果您将PHP与Javascript结合使用,则可能意味着Javascript正在浏览器端发生,而PHP则在服务器端发生。
如果您需要验证电话号码的格式,例如,您可以在提交表单(在浏览器中的Javascript中)或PHP中的服务器端之前执行此操作。
假设您是在Javascript中完成的,现在当没有Javascript的用户来到并填写您的表单时会发生什么?或者更可能是垃圾邮件机器人?格式错误的数据现在会传回服务器,可能会触发错误或其他意外情况。在此示例中,您可能希望至少在服务器端验证电话号码。但您可能希望能够在提交之前告诉用户电话号码无效,而无需等待服务器验证并发回错误,因此在浏览器端的
我希望这有助于展示在哪里实现逻辑的一些注意事项。
答案 2 :(得分:0)
非常不可靠的基准测试表明浏览器实际上可能更快。虽然浏览器中可能会有一些非常大的优化使用我制作的测试用例而不是我做的PHP案例。
这篇文章也支持调查结果:Speed of PHP vs JavaScript?
在PHP中运行此代码:
<?php
require("Logger.php");
$string = "apples and bananas";
$logger = new Logger("Start");
for ($x = 0; $x < 1000000; $x++) {
$newString = str_replace("bananas", "oranges", $string);
}
$logger->log("Finish");
echo $logger->status();
在本地计算机(WAMP)上以 10867ms 回来。 (删除我用于记录的类不会加速它。)
运行以下JS代码(http://jsfiddle.net/MQKLT/3/)返回大约343毫秒(并且明显更快)。
function go() {
var str = "apples and bananas";
var newString = "";
var d = new Date();
var n = (d.getSeconds() * 1000) + d.getMilliseconds();
for (var x = 0; x < 1000000; x++) {
newString = str.replace("bananas", "oranges");
newString = newString + x;
}
var d2 = new Date();
var n2 = (d2 .getSeconds() * 1000) + d2.getMilliseconds();
//console.log("First: " + n + " Second: " + n2 + " Total: " + (n2 - n));
alert("First: " + n + " Second: " + n2 + " Total: " + (n2 - n) + " Output: " + newString);
}
正如我所说,浏览器可能正在做一些重大的优化。我在上面发布的价值是在Chrome中测试的。我确实在IE中获得了相似的时间,并且在Firefox中获得了更快的时间(这向我表明正在进行优化。)
考虑到这一点: 我是一个懒惰的程序员,只要它不危及安全性,我倾向于选择对我来说最方便的东西。 (IE,关于验证的字符串操作应该在PHP中完成/远离客户端控制)对于自己的字符串替换执行AJAX请求是完全没有意义的。对于现实世界的情况,它取决于许多变量,例如涉及的浏览器,涉及的PC,涉及的服务器。
如果您担心字符串替换性能,那么您用于执行任务的逻辑可能有问题。