Это моя первая статья на английском языке. Так что я надеюсь, что всем понравится эта статья, и если кто-то ничего не понимает или у вас есть вопросы, вы можете написать об этом в комментариях ниже .. Спасибо !!

Многим программистам интересно, какие языки программирования или фреймворки стоит изучить или выбрать для нового проекта. У него так много факторов, которые вам нужно учитывать, прежде чем выбрать лучший, и я думаю, что нельзя отрицать, что скорость работы является одним из самых важных факторов, которые следует учитывать.

Сегодня я познакомлю вас с моим другом ... Его зовут «Бомбардье». Он родился для тестирования вашего сервера. Да, сегодня вы узнаете, какие языки или фреймворки являются самыми быстрыми за 5 минут! !!!!

Бомбардье

Давай сначала познакомимся с моим другом. Как вы знаете, его зовут Бомбардье, и он был рожден Go Language для одной цели ... Это ориентир. Bombardier используйте fasthttp вместо go http для запуска любого сервера, который вы хотите ...

1. Установка

Прежде чем делать что-либо еще, вам нужно сначала установить Go Compiler, потому что Bombardier сделан Golang ..

Затем вы можете установить Bombardier с помощью

go get -u github.com/codesenberg/bombardier

Теперь мы готовы сжечь все, что угодно ... Но сначала нам нужно создать что-то, что будем сжигать :(

2. Создайте сервер

Вы можете создать столько серверов, сколько хотите, а также со сколькими языками или фреймворками.

Но в этом примере я буду использовать Golang и Node.js с http-библиотекой по умолчанию для создания нашего примера Server.

Первое создание Go Server

## server.go
package main
import (
  "fmt"
  "net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
  fmt.Println("Hello World")
  fmt.Fprintf(w, "Hi there, %s!", r.URL.Path[1:])
}
func main() {
  http.HandleFunc("/", handler)
  fmt.Println("server is listening on 3331")
  http.ListenAndServe(":3331", nil)
}

Затем сервер Node.js

## server.js
const http = require(‘http’)
const port = 3332
const requestHandler = (request, response) => {
  console.log(‘Hello World’)
  response.end(‘Hi there, ‘, request.url)
}
const server = http.createServer(requestHandler)
server.listen(port, (err) => {
  if (err) {
    return console.log(‘something bad happened’, err)
  }
  console.log(`server is listening on ${port}`)
})

Наконец-то оживите оба Сервера !!

3. Пусть сгорит ваш Сервер !!!!

Мы готовы стрелять !! просто откройте другой терминал, затем используя эту команду

./bombardier -c 125 -n 100000 127.0.0.1:3331
  • -c: затем номер параллелизма
  • -n: после номера запроса

Затем введите URL или IP-адрес и введите «ENTER» !!

В этом примере команды я запрошу наш сервер Go на порту 3331 для запросов 100 КБ при 125 параллелизме. И вот результат !!!

Я пробую одну и ту же конфигурацию для запуска как на Go Server, так и на сервере Node.js.

Пойдите, обработайте все запрошенные удивительно, используя 6 секунд для всех запросов 100k, а в среднем - 17k запросов в секунду !!!!

С другой стороны, Node.js обрабатывает 100 тыс. Запросов за 30 секунд ... это около 3,3 тыс. Запросов в секунду.

Предупреждение!

  • Когда вам нужно использовать команду bombardier, сначала перейдите к «Go Path», затем найдите библиотеку bombardier в каталоге bin, или вы можете использовать ее глобально, установив как global.

Что еще нужно знать о тесте

Результат в этой статье очень простой и ничего не доказывает, потому что, если вы хотите провести более серьезный сравнительный анализ, есть много поводов для беспокойства.

  • Сеть… Этот пример запускает все запросы в локальной сети, и если вы запускаете из локальной сети, результат будет значительно медленнее.
  • Обработчик сервера - это просто функция hello world. Таким образом, некоторые фреймворки или языки могут хорошо справляться с этим, но могут быть медленнее, чем другие, например, когда необходимо подключиться к базе данных.
  • Нестабильно и ненадежно запускать 2 сервера на одной машине, которая разделяет все ресурсы. Вам необходимо создать виртуальную машину и установить одинаковые ресурсы для всех серверов, которые вы хотите протестировать.
  • У Framworks, Languages, Databases, ORMS есть некоторые накладные расходы ... и этот факт, который вам нужно знать, потому что некоторые языки хороши, но фреймворк или ORM хуже, чем другие фреймворки / ORM на других языках.

На самом деле есть много факторов, которые вам нужно обсудить, прежде чем вы захотите сделать тест более серьезным. Но моя цель в этой статье - рассказать вам, как протестировать любые языки или фреймворки самым простым или простым способом, который вы можете сделать самостоятельно.

Наконец, я надеюсь, вам понравится это, и если что-то не так с содержанием или с моим английским, не стесняйтесь поправлять меня в комментарии ниже .. Thx.

Связанная статья (Thai Lang)