суббота, 23 января 2016 г.

Бенчмарк symfony3 vs yii2. Часть 2. php7

Выяснив с помощью blackfire, что большую часть времени занимает подключение файлов, попробуем всё тоже самое на php7, тем более - он сильно оптимизирован. Аж в 2 раза!

Протестим скорости в один поток для начала
ab -n 10000 %url%
Symfony3
Concurrency Level:      1
Time taken for tests:   53.361 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      4140000 bytes
HTML transferred:       1970000 bytes
Requests per second:    187.40 [#/sec] (mean)
Time per request:       5.336 [ms] (mean)
Time per request:       5.336 [ms] (mean, across all concurrent requests)
Transfer rate:          75.77 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    3  47.5      0    1001
Processing:     2    3   0.2      3       9
Waiting:        2    3   0.2      3       9
Total:          3    5  47.6      3    1004

Percentage of the requests served within a certain time (ms)
  50%      3
  66%      3
  75%      3
  80%      3
  90%      3
  95%      3
  98%      3
  99%      3
 100%   1004 (longest request)


Результаты yii2:
Concurrency Level:      1
Time taken for tests:   21.935 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      3440000 bytes
HTML transferred:       1990000 bytes
Requests per second:    455.88 [#/sec] (mean)
Time per request:       2.194 [ms] (mean)
Time per request:       2.194 [ms] (mean, across all concurrent requests)
Transfer rate:          153.15 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1  17.3      0    1000
Processing:     1    2   0.1      2       3
Waiting:        1    2   0.1      2       3
Total:          2    2  17.3      2    1002

Percentage of the requests served within a certain time (ms)
  50%      2
  66%      2
  75%      2
  80%      2
  90%      2
  95%      2
  98%      2
  99%      2
 100%   1002 (longest request)


Теперь нагрузим в 50 потоков
Симфони:
Concurrency Level:      50
Time taken for tests:   9.383 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      4140000 bytes
HTML transferred:       1970000 bytes
Requests per second:    1065.72 [#/sec] (mean)
Time per request:       46.917 [ms] (mean)
Time per request:       0.938 [ms] (mean, across all concurrent requests)
Transfer rate:          430.87 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       3
Processing:     5   47   3.4     46      70
Waiting:        5   47   3.4     46      70
Total:          6   47   3.4     46      70

Percentage of the requests served within a certain time (ms)
  50%     46
  66%     47
  75%     47
  80%     48
  90%     50
  95%     55
  98%     57
  99%     57
 100%     70 (longest request)

Тоже для yii
Concurrency Level:      50
Time taken for tests:   3.116 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      3440000 bytes
HTML transferred:       1990000 bytes
Requests per second:    3209.72 [#/sec] (mean)
Time per request:       15.578 [ms] (mean)
Time per request:       0.312 [ms] (mean, across all concurrent requests)
Transfer rate:          1078.27 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       2
Processing:     4   15   1.9     15      35
Waiting:        4   15   1.9     15      35
Total:          4   16   1.9     15      35

Percentage of the requests served within a certain time (ms)
  50%     15
  66%     15
  75%     16
  80%     16
  90%     16
  95%     17
  98%     23
  99%     27
 100%     35 (longest request)


Получаем что при хорошей такой нагрузке php7 даёт такие результаты
Симфони 5.6,   23.8 с на всё время теста и 120мс на 1 запрос
Симфони 7       9.3 с, 47мс
Yii 5.6                7.7с, 38мс
Yii 7                   3.2с, 15мс

Уии на php5 быстрее симфони3 на php7. (на php7 немного другой набор расширений)
По потребляемой памят
С5.6 - 2486184
С7    - 1955816
У5.6 - 950000
У7    - 1073216

Но всё это - чистая синтетика - простое echo. Надо сравнить с примером, когда будет запрос в базу или другой сервис (кэш). Продолжение следует

Комментариев нет:

Отправить комментарий