学php中发现了spl,不知道在使用中是否有性能提升,或者根本就没用,大神们来给我解答下。
1
lxrmido 2015-04-23 09:01:22 +08:00
SPL的主要价值不是提升性能,而是提升开发效率
|
2
anewg 2015-04-23 09:05:28 +08:00
看成sql,差点开喷楼主。。罪过
|
3
jevonszmx 2015-04-23 09:06:04 +08:00
写了N多年php代码了,性能瓶颈基本都不是php的问题,除非代码写的特别烂,比如效率差的循环/递归、循环查数据库之类的。
一般性能影响最大的,还是数据库。 |
5
tini19 2015-04-23 10:01:11 +08:00
使用函数,绝不使用class,面向过程编程,是提升php性能的最佳途径
|
6
jugelizi 2015-04-23 10:43:41 +08:00
简直就是灾难
|
7
imn1 2015-04-23 10:50:53 +08:00
用 SPL 代码短很多,我试过几十行代码变成几行
性能提升不大,甚至下降,不过我的知识停留在几年前了 |
9
imn1 2015-04-23 10:56:21 +08:00
SPL中的递归器我用的最多,比自己写递归函数省事多了
|
10
yakczh 2015-04-23 11:52:52 +08:00
有测试数据吗?
|
11
dhlwing 2015-04-23 15:47:13 +08:00
可读性和debug的时候会有一点障碍吧
|
12
jevonszmx 2015-04-23 16:03:57 +08:00
@RihcardLu
读写量太大的话,一般问题是会导致锁表(索引设置不合理,会导致写频繁时性能问题),最简单的方法就是读写分离。但是读写分离会有几个问题,1是读写分离数据同步会有延迟(我们运营老是抱怨后台操作了没反应,刷几次才有效果,哈哈~~),2是程序需要方便支持切换读写库(用主流框架就会好很多)。 想要性能更好,也可以中间加一层缓存,比如: 微博这样的场景:用户读微博列表,发微博,再刷新看最新微博。 用户读微博列表:是从缓存读(如果逻辑改动太多,也可以改成读db,然后被动更新缓存); 发微博:直接更新缓存(异步入库,或者推入待入库队列写入数据库中); 再刷新看最新微博:是从缓存读 这样做,读的压力基本上是缓存,写的时候因为也是更新缓存,所以写入后用户再读数据,还是从缓存读,大大减轻db压力。 ps~~ 缓存推荐使用redis,渣浪微博有几次服务器挂了,可是还能看微博,应该就是redis服务器还健在~~ |
13
raincious 2015-04-23 16:12:30 +08:00
SPL = Stand PHP Library,只是提供一个标准的接口和方法,没有其他的意义(比如做出“用我更快”的保证)。
因此,楼上都对。 @jevonszmx @RihcardLu 你们竟然在歪楼。 @cevincheung 楼主,这是你失散已久的兄弟么? |
15
raincious 2015-04-23 17:11:06 +08:00
@Nicksxs
这……完全不是一回事。还是我#13说的,提供一套接口和方法而已。 建议楼主看看: http://php.net/manual/zh/book.spl.php 事实上你很早(5.4)就能在函数参数上检查压入的类型了,比如function myFunction(MyClass $instance),这个和SPL的关系可能仅仅是你能够function myFunction(ArrayIterator $iteratorInstance)这样(吧?) 关于严格类型检查: http://php.net/manual/en/language.oop5.typehinting.php |
16
cevincheung 2015-04-23 18:02:46 +08:00
我是来围观的。不要看我的头像。
|
18
jevonszmx 2015-04-23 18:28:39 +08:00
@cevincheung
围观萌头像 |