字符串转换成整数 php,在PHP中将字符串转换为整数的最快方法

这篇博客探讨了在PHP中使用强制类型转换和(string)函数将字符串转化为整数的性能差异。作者通过运行10,000,000次测试,比较了四种方法的执行时间:0+字符串、(integer)字符串、0+失败字符串和(int)失败字符串。结果显示,强制类型转换在失败情况下执行时间较长,而在成功转换时两者时间相近。
摘要由CSDN通过智能技术生成

运行测试。

string coerce:          7.42296099663

string cast:            8.05654597282

string fail coerce:     7.14159703255

string fail cast:       7.87444186211

此测试对每个方案都运行了10,000,000次。:-)

强制是 0 + "123"

正在投射 (integer)"123"

我认为Co-ercion快一点。哦,尝试0 + array('123')是PHP中的致命错误。您可能希望代码检查提供的值的类型。

我的测试代码如下。

function test_string_coerce($s) {

return 0 + $s;

}

function test_string_cast($s) {

return (integer)$s;

}

$iter = 10000000;

print "-- running each text $iter times.\n";

// string co-erce

$string_coerce = new Timer;

$string_coerce->Start();

print "String Coerce test\n";

for( $i = 0; $i < $iter ; $i++ ) {

test_string_coerce('123');

}

$string_coerce->Stop();

// string cast

$string_cast = new Timer;

$string_cast->Start();

print "String Cast test\n";

for( $i = 0; $i < $iter ; $i++ ) {

test_string_cast('123');

}

$string_cast->Stop();

// string co-erce fail.

$string_coerce_fail = new Timer;

$string_coerce_fail->Start();

print "String Coerce fail test\n";

for( $i = 0; $i < $iter ; $i++ ) {

test_string_coerce('hello');

}

$string_coerce_fail->Stop();

// string cast fail

$string_cast_fail = new Timer;

$string_cast_fail->Start();

print "String Cast fail test\n";

for( $i = 0; $i < $iter ; $i++ ) {

test_string_cast('hello');

}

$string_cast_fail->Stop();

// -----------------

print "\n";

print "string coerce:          ".$string_coerce->Elapsed()."\n";

print "string cast:            ".$string_cast->Elapsed()."\n";

print "string fail coerce:     ".$string_coerce_fail->Elapsed()."\n";

print "string fail cast:       ".$string_cast_fail->Elapsed()."\n";

class Timer {

var $ticking = null;

var $started_at = false;

var $elapsed = 0;

function Timer() {

$this->ticking = null;

}

function Start() {

$this->ticking = true;

$this->started_at = microtime(TRUE);

}

function Stop() {

if( $this->ticking )

$this->elapsed = microtime(TRUE) - $this->started_at;

$this->ticking = false;

}

function Elapsed() {

switch( $this->ticking ) {

case true: return "Still Running";

case false: return $this->elapsed;

case null: return "Not Started";

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值