- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
出于好奇,我做了一个实验。我想看看 strtolower()
之间是否存在细微差异和 strtoupper()
.我期待 strtolower()
在大多数小写字符串上会更快,反之亦然。我发现的是 strtolower()
在所有情况下都比较慢(尽管在您执行数百万次之前完全微不足道。)这是我的测试。
$string = 'hello world';
$start_time = microtime();
for ($i = 0; $i < 10000000; $i++) {
strtolower($string);
}
$timed = microtime() - $start_time;
echo 'strtolower ' . $string . ' - ' . $timed . '<br>';
重复strtolower()
和 strtoupper()
与 hello world
, HELLO WORLD
, 和 Hello World
. Here is the full gist.我已经多次运行代码并不断得到大致相同的结果。这是下面的一次测试。 (完成了在要点中使用 $i < $max = 1000000
的原始来源,因此循环中可能有额外的开销;请参阅评论。)
strtolower hello world - 0.043829
strtoupper hello world - 0.04062
strtolower HELLO WORLD - 0.042691
strtoupper HELLO WORLD - 0.015475
strtolower Hello World - 0.033626
strtoupper Hello World - 0.017022
我相信控制它的 php-src github 中的 C 代码在这里用于 strtolower()这里是strtoupper()
需要说明的是,这不会阻止我使用 strtolower()
.我只是想了解这里发生了什么。
为什么是strtolower()
比 strtoupper()
慢?
最佳答案
这主要取决于您当前使用的字符编码,但速度差异的主要原因是特殊字符的每个编码字符的大小。
取自babelstone.co.uk :
For example, lowercase j with caron (ǰ) is represented as a single encoded character (U+01F0 LATIN SMALL LETTER J WITH CARON), but the corresponding uppercase character (J̌) is represented in Unicode as a sequence of two encoded characters (U+004A LATIN CAPITAL LETTER J + U+030C COMBINING CARON).
在 Unicode 字符索引中筛选更多数据将不可避免地花费更长的时间。
请记住,strtolower
使用您当前的语言环境,因此如果您的服务器使用的字符编码不支持 strtolower
特殊字符(例如'Ê'), 它只会返回特殊字符。然而,UTF-8 上的字符映射已设置,可以通过运行 mb_strtolower 来确认。 .
还有可能比较属于 uppercase
类别的字符数与你在 lowercase
类别中找到的字符数,但是再一次,这取决于您的字符编码。
简而言之,strtolower
有一个更大的字符数据库,用于在检查字符是否为 大写
时将每个单独的字符串字符进行比较。
关于php - 为什么 strtolower 比 strtoupper 稍慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44782098/
我有一小段代码想大写。 $box = mysql_real_escape_string(strtoupper($_POST['box'])); 出于某种原因,它没有将其变成大写。难道是因为帖子是字母和
1,将字符串转换成小写 strtolower函数: 该函数将传入的字符串参数所有的字符都转换成小写,并以小定形式放回这个字符串。 例子: ?
出于好奇,我做了一个实验。我想看看 strtolower() 之间是否存在细微差异和 strtoupper() .我期待 strtolower()在大多数小写字符串上会更快,反之亦然。我发现的是 st
我目前在一个 GREEK 项目中工作。在那个项目中,所有内容都是希腊语,并且我有一个搜索功能。搜索过程很好。但是 strtoupper() 没有将希腊语转换为大写,而 strtolower() 没有将
我一直在阅读用户对 strtoupper() PHP 函数的评论,但似乎没有就如何对非英语字符串进行转换达成共识。我的意思是人们提供本地化的解决方案和东西,但难道不应该有一种统一的方法来将字符串转换为
我们正在处理一个以前从未发生过的 Joyent Solaris 服务器中的奇怪错误(不会发生在本地主机或其他两个具有相同 php 配置的 Solaris 服务器中)。其实我也不确定是要看php还是so
我是一名优秀的程序员,十分优秀!