zoukankan      html  css  js  c++  java
  • Swoole 协程性能测试

    // 开启协程化,文件操作,sleep,Mysqli,PDO,streams等都变成异步IO
    Co::set(['hook_flags'=> SWOOLE_HOOK_ALL]);
    
    $s = microtime(true);
    
    // 创建协程容器
    Co
    un(function() {
        // 开启100个协程执行usleep
        for ($c = 100; $c--;) {
            go(function () {
                for ($n = 100; $n--;) {
                    usleep(1000);
                }
            });
        }
    
        // 开启100个协程执行100次文件读写
        for ($c = 100; $c--;) {
            go(function () use ($c) {
                $tmp_filename = "/tmp/test-{$c}.php";
                for ($n = 100; $n--;) {
                    $self = file_get_contents(__FILE__);
                    file_put_contents($tmp_filename, $self);
                    assert(file_get_contents($tmp_filename) === $self);
                }
                unlink($tmp_filename);
            });
        }
    
        // 开启50个协程执行100次数据库查询
        for ($c = 50; $c--;) {
            go(function () {
                $pdo = new PDO('mysql:host=127.0.0.1;dbname=test;charset=utf8', 'root', 'root');
                $statement = $pdo->prepare('SELECT * FROM `user`');
                for ($n = 100; $n--;) {
                    $statement->execute();
                    assert(count($statement->fetchAll()) > 0);
                }
            });
        }
        
        // 开启50个协程执行100次数据库查询
        for ($c = 50; $c--;) {
            go(function () {
                $mysqli = new Mysqli('127.0.0.1', 'root', 'root', 'test');
                $statement = $mysqli->prepare('SELECT `id` FROM `user`');
                for ($n = 100; $n--;) {
                    $statement->bind_result($id);
                    $statement->execute();
                    $statement->fetch();
                    assert($id > 0);
                }
            });
        }
    });
    
    echo 'use ' . (microtime(true) - $s) . ' s';
    
  • 相关阅读:
    封装好的AFN网络请求框架和MBProgress
    iOS定时器的使用
    iOS去除导航栏和tabbar的1px横线
    移动端加解密
    改变字符串中部分字符传的字体大小和颜色
    关于NSLog
    ipad开发:二维码扫描,摄像头旋转角度问题解决办法
    iOS-图文表并茂,手把手教你GCD
    计算富文本的高度
    jsp打印
  • 原文地址:https://www.cnblogs.com/danhuang/p/13267762.html
Copyright © 2011-2022 走看看