php数组性能,PHP数组性能

这是我第一个关于Stackoverflow的问题,请跟我一起。

我测试一个二进制包装的算法,我选择PHP来模拟它,因为它是我的面包和黄油的语言,现在。

正如你可以看到http://themworks.com/pack_v0.2/oopack.php?ol=1它工作相当不错,但你需要等待10-20秒100矩形包装。对于一些难以处理的集合,它会达到php的30s运行时限制。

我做了一些分析,它表明,大多数时候,我的脚本通过一个小的2d阵列的不同部分,0和1。它检查某个单元格是否等于0/1或将其设置为0/1。它可以做这样的操作百万次,每次需要几微秒。

我想我可以使用静态类型语言的布尔数组,事情会更快。或者甚至做一个1位值的数组。我想把整个事情转换成一些编译语言。是PHP只是不好吗?

如果我需要转换它让我们说C,自动转换器有多好?我的脚本只是很多for循环与基本数组和对象操作。

谢谢!

编辑。这个函数被调用比任何其他。它读取一个非常简单的对象的几个属性,并通过一个很小的数组的非常小的一部分,以检查是否有任何元素不等于0。

function fits($bin, $w, $h, $x, $y) {

$w += $x;

$h += $y;

for ($i = $x; $i < $w; $i++) {

for ($j = $y; $j < $h; $j++) {

if ($bin[$i][$j] !== 0) {

return false;

}

}

}

return true;

}

更新:我已经尝试使用1d阵列,而不是2d作为建议的答案之一。因为我需要总是有当前bin宽度可访问,我决定包装对象中的一切。此外,现在在每个循环中,索引需要计算。现在脚本需要更多的时间运行。其他技术没有带来太多的性能提升,而是使代码更少的可读性。时间嘻哈我猜。

更新:因为hiphop php只运行在linux上,我没有一个,我决定重写整个事情在C。很高兴清新老技能。此外,如果我找到一种方法使用hiphop,比较手写的C代码和一个嘻哈会产生将是有趣的。

更新:我重写了这个东西在c,平均起来工作速度快20倍,使用更少的内存。让我看看,如果我可以使它更快。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值