굉장히 빠른 Go-like Server Swift Swift 라이브러리 Prorsum을 사용해 보았습니다.

Go와 같은 Server Swift Swift 라이브러리 Prorsum의 저자 noppoMan

Prorsum 설치 방법을 알려주고 샘플을 만들었으므로 공유합니다.

사용한 라이브러리
htps : // 기주 b. 코 m / 노포 만 / P 로스 m
A Go like concurrent system + networking/http library for Swift that works on Linux and Mac

벤치마크 결과는 다음


너무 빠르지 않니?

3분 안에 할 수 있을지도 모르기 때문에 다음 단계를 시도해 봅시다!
(주) 이미 인스톨 하고 있던 라이브러리의 인스톨 순서가 빠져 있을지도 모릅니다.

Terminal.app를 열고
다음 명령을 치십시오.
$ mkdir ProrsumSample
$ cd ProrsumSample
$ swift package init

$ vim Package.swift

Package.swift를 다음과 같이 편집
import PackageDescription

let package = Package(
    name: "ProrsumSample",
    dependencies: [
        .Package(url: "https://github.com/noppoMan/Prorsum.git", majorVersion: 0, minor: 1),
    ]
)

ESC를 누르고 : wq vim 명령으로 Package.swift를 저장하고 닫습니다.
$ swift build
$ vim Sources/main.swift

Sources/main.swift를 다음과 같이 편집
import Prorsum
import Foundation

let server = try! HTTPServer { (request, writer) in
    do {
        let response = Response(
            headers: ["Server": "Prorsum Micro HTTP Server"],
            body: .buffer("hello Server Side Swift".data)
        )

        try writer.serialize(response)

        writer.close()
    } catch {
        fatalError("\(error)")
    }
}

try! server.bind(host: "0.0.0.0", port: 3000)
print("Server listening at 0.0.0.0:3000")
try! server.listen()

RunLoop.main.run()

ESC를 누르고 : wq vim 명령을 사용하여 Sources/main.swift를 저장하고 닫습니다.

Terminal.app를 열고
다음 명령을 치십시오.
$ swift build
$ .build/debug/ProrsumSample

마지막 .build/debug/ProrsumSample은 프로젝트 이름에 맞게 변경해야합니다.

Terminal.app에서 서버를 시작한 상태에서 Command+T에서 탭을 열고
ab -n 10000 -c 100 -g out.data http://127.0.0.1:3000/

벤치마크를 측정한 후 Control+C에서 서버를 종료하고 gnuplot 설치
htp // 메모 ry의 t후응 d. 코 m / 우신 g-g없는 p-t-p-p-t-apachi-ben ch 마 rk-da /
이것을 참고로
$ brew install gnuplot
$ vim apache-benchmark.p

apache-benchmark.p
# output as png image
set terminal png

# save file to "benchmark.png"
set output "benchmark.png"

# graph title
set title "Server Side Swift for Prorsum\nab -n 10000 -c 100 -g out.data http://127.0.0.1:3000/"

#nicer aspect ratio for image size
set size 1,0.7

# y-axis grid
set grid y

#x-axis label
set xlabel "request"

#y-axis label
set ylabel "response time (ms)"

#plot data from "out.data" using column 9 with smooth sbezier lines
plot "out.data" using 9 smooth sbezier with lines title "something"

ESC를 누르고 : wq vim 명령으로 apache-benchmark.p를 저장하고 닫습니다.
$ gnuplot apache-benchmark.p
$ open benchmark.png

소스를 Xcode에서 편집하려면
$ swift package generate-xcodeproj
$ ProrsumSample.xcodeproj 

벤치마크 결과는 다음


측정한 기계 및 사양


noppoMan 님의 라이브러리와 Tokyo Server Side Swift의 발표 자료는 이쪽
A Go like concurrent system + networking/http library for Swift that works on Linux and Mac
htps : // 기주 b. 코 m / 노포 만 / P 로스 m

앞으로 기대하네요!

이상, Tokyo Server Side Swift #6의 참가 보고서였습니다.

좋은 웹페이지 즐겨찾기