V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raincious
V2EX  ›  PHP

简单的问题:框架初始化,用时多少算合格?

  •  
  •   raincious · 2013-05-25 15:33:04 +08:00 · 3090 次点击
    这是一个创建于 3960 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近一直在忙着弄框架。现在还差模板引擎+插件系统就算完成了。但是效率总是觉得不满意,于是ab.exe测试了下。

    测试项目就是让框架自己初始化好,然后SELECT * FROM table WHERE 1 LIMIT 0,1(table里面也只有一个row),最后,输出一个Hello Word。

    我考虑如果不开APC不开数据库持久链接,能0.01秒内完成如上操作,那么也就OK了。但现在如上操作消耗平均0.017-0.033秒,感觉有点慢(而且跨度也太大了),好捉鸡啊。

    所以我想问一下大家,你自己的框架初始化的速度是多少才算合格?好让我有一个优化的目标。感谢大家。




    // 以下是附加内容,可以忽略:


    记得有个测评说YII每秒能处理500多个请求,于是乎我也测试了下请求数:


    测试机器是双核2.1GHz的Core2,内存4GB,系统用掉了2GB,Windows。

    这是ab的结果:


    这是不打开APC,PDO不持续连接数据库的时候:

    Concurrency Level: 200
    Time taken for tests: 57.398 seconds
    Complete requests: 7000
    Failed requests: 6555
    (Connect: 0, Receive: 0, Length: 6555, Exceptions:
    Write errors: 0
    Total transferred: 2355482 bytes
    HTML transferred: 1046482 bytes
    Requests per second: 121.95 [#/sec] (mean) // 每秒只能处理121次请求
    Time per request: 1639.951 [ms] (mean)
    Time per request: 8.200 [ms] (mean, across all c
    Transfer rate: 40.08 [Kbytes/sec] received



    这是打开APC,PDO不持续连接数据库的时候:

    Concurrency Level: 200
    Time taken for tests: 33.709 seconds
    Complete requests: 7000
    Failed requests: 3652
    (Connect: 0, Receive: 0, Length: 3652, Exceptions: 0)
    Write errors: 0
    Total transferred: 2354512 bytes
    HTML transferred: 1045512 bytes
    Requests per second: 207.66 [#/sec] (mean) // 稍微高一点
    Time per request: 963.112 [ms] (mean)
    Time per request: 4.816 [ms] (mean, across all concurrent requests)
    Transfer rate: 68.21 [Kbytes/sec] received



    这是打开APC+PDO设定持续连接的时候:

    Concurrency Level: 200
    Time taken for tests: 24.229 seconds
    Complete requests: 7000
    Failed requests: 4994
    (Connect: 0, Receive: 0, Length: 4994, Exceptions: 0)
    Write errors: 0
    Total transferred: 2362188 bytes
    HTML transferred: 1053188 bytes
    Requests per second: 288.91 [#/sec] (mean) // 稍微稍微比之前的高一点,但是持续连接用不好会有灾难性事件的
    Time per request: 692.268 [ms] (mean)
    Time per request: 3.461 [ms] (mean, across all concurrent requests)
    Transfer rate: 95.21 [Kbytes/sec] received
    2 条回复    1970-01-01 08:00:00 +08:00
    lyjyiran
        1
    lyjyiran  
       2013-05-25 15:46:40 +08:00   ❤️ 1
    小项目不注重性能不用特意优化, 大项目不会不考虑opcode缓存,mysqlnd之类的扩展甚至db中间层.

    而且法无定则,光一个include文件,小项目注重lazyload,避免无用文件的加载开销; 大项目为了opcode会尽量eagerload

    我觉得这类优化没太大意思, pure php和symfony构建的项目除了benchmark, 自然人在公网访问能感受多少差异?
    raincious
        2
    raincious  
    OP
       2013-05-25 15:59:11 +08:00
    @lyjyiran 嗯。。。。这个道理我是懂了,但,我的目的是让框架更快一点,至少不能慢于平均值嗯。所以才发了这个帖子来问。

    此外,我觉得如果我框架的速度够快,那么给其他程序员施加的优化的负担就小了,而且可以让一台服务器能够承受更多的流量,能够节省一些投资(公司会喜欢),所以。。。嗯。。。我才这么做的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3269 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:13 · PVG 22:13 · LAX 07:13 · JFK 10:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.