-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
77801db
commit 6a4346a
Showing
7 changed files
with
174 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
cmake_minimum_required(VERSION 3.16) | ||
project(uWebSocketsBenchmarks) | ||
message(STATUS "Building ${PROJECT_NAME}") | ||
|
||
# Set C and C++ standards | ||
set(CMAKE_C_STANDARD 11) | ||
set(CMAKE_CXX_STANDARD 17) | ||
|
||
# Enable LTO if supported | ||
include(CheckIPOSupported) | ||
check_ipo_supported(RESULT lto_supported OUTPUT error) | ||
if(lto_supported) | ||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) | ||
else() | ||
message(WARNING "IPO / LTO is not supported: ${error}") | ||
endif() | ||
|
||
# Compile options: enable optimizations, march=native | ||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}") | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -march=native") | ||
|
||
# Add uSockets include directory | ||
include_directories(${CMAKE_SOURCE_DIR}/libs/uWebSockets/uSockets/src) | ||
|
||
# Define the parser executable | ||
add_executable(${PROJECT_NAME}parser parser.cpp) | ||
target_compile_options(${PROJECT_NAME}parser PRIVATE -flto) | ||
target_link_options(${PROJECT_NAME}parser PRIVATE -flto) | ||
|
||
# Compile tests with uSockets | ||
add_executable(${PROJECT_NAME}broadcast_test broadcast_test.c) | ||
target_compile_definitions(${PROJECT_NAME}broadcast_test PRIVATE -DLIBUS_USE_OPENSSL) | ||
target_link_libraries(${PROJECT_NAME}broadcast_test ssl crypto ${LDFLAGS_STRIPPED_UWS} uSockets) | ||
target_compile_options(${PROJECT_NAME}broadcast_test PRIVATE -flto) | ||
target_link_options(${PROJECT_NAME}broadcast_test PRIVATE -flto) | ||
|
||
add_executable(${PROJECT_NAME}load_test load_test.c) | ||
target_compile_definitions(${PROJECT_NAME}load_test PRIVATE -DLIBUS_USE_OPENSSL) | ||
target_link_libraries(${PROJECT_NAME}load_test ssl crypto ${LDFLAGS_STRIPPED_UWS} uSockets) | ||
target_compile_options(${PROJECT_NAME}load_test PRIVATE -flto) | ||
target_link_options(${PROJECT_NAME}load_test PRIVATE -flto) | ||
|
||
add_executable(${PROJECT_NAME}scale_test scale_test.c) | ||
target_compile_definitions(${PROJECT_NAME}scale_test PRIVATE -DLIBUS_USE_OPENSSL) | ||
target_link_libraries(${PROJECT_NAME}scale_test ssl crypto ${LDFLAGS_STRIPPED_UWS} uSockets) | ||
target_compile_options(${PROJECT_NAME}scale_test PRIVATE -flto) | ||
target_link_options(${PROJECT_NAME}scale_test PRIVATE -flto) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Set the CMake minimum version | ||
cmake_minimum_required(VERSION 3.10) | ||
|
||
# Project name | ||
project(uWSLibEpollBenchmarker) | ||
message(STATUS "Building ${PROJECT_NAME}") | ||
|
||
# Set C++ standard | ||
set(CMAKE_CXX_STANDARD 17) | ||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||
|
||
# Include directories | ||
include_directories(../src ../uSockets/src) | ||
|
||
# Linker flags for wrapped syscalls | ||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--wrap=recv,--wrap=bind,--wrap=listen,--wrap=send,--wrap=socket,--wrap=epoll_wait,--wrap=accept4,--wrap=epoll_ctl") | ||
|
||
# Add the executable | ||
add_executable(${PROJECT_NAME} ../examples/HelloWorld.cpp epoll_benchmarker.cpp) | ||
|
||
# Link with uSockets library | ||
target_link_libraries(${PROJECT_NAME} PRIVATE uSockets) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
cmake_minimum_required(VERSION 3.10) | ||
|
||
# Project name and language | ||
project(uWebSocketsTests) | ||
message(STATUS "Building ${PROJECT_NAME}") | ||
|
||
# Set the C++ standard | ||
set(CMAKE_CXX_STANDARD 17) | ||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||
|
||
# Address sanitizer flag | ||
set(SANITIZE_FLAGS "-fsanitize=address") | ||
|
||
# Define targets names with ${PROJECT_NAME} prefix | ||
set(Query ${PROJECT_NAME}Query) | ||
set(ChunkedEncoding ${PROJECT_NAME}ChunkedEncoding) | ||
set(TopicTree ${PROJECT_NAME}TopicTree) | ||
set(HttpRouter ${PROJECT_NAME}HttpRouter) | ||
set(BloomFilter ${PROJECT_NAME}BloomFilter) | ||
set(ExtensionsNegotiator ${PROJECT_NAME}ExtensionsNegotiator) | ||
set(HttpParser ${PROJECT_NAME}HttpParser) | ||
|
||
# Define the executables and their sources | ||
add_executable(${Query} Query.cpp) | ||
add_executable(${ChunkedEncoding} ChunkedEncoding.cpp) | ||
add_executable(${TopicTree} TopicTree.cpp) | ||
add_executable(${HttpRouter} HttpRouter.cpp) | ||
add_executable(${BloomFilter} BloomFilter.cpp) | ||
add_executable(${ExtensionsNegotiator} ExtensionsNegotiator.cpp) | ||
add_executable(${HttpParser} HttpParser.cpp) | ||
|
||
# Add the address sanitizer flags to each target | ||
target_compile_options(${Query} PRIVATE ${SANITIZE_FLAGS}) | ||
target_link_options(${Query} PRIVATE ${SANITIZE_FLAGS}) | ||
|
||
target_compile_options(${ChunkedEncoding} PRIVATE ${SANITIZE_FLAGS}) | ||
target_link_options(${ChunkedEncoding} PRIVATE ${SANITIZE_FLAGS}) | ||
|
||
target_compile_options(${TopicTree} PRIVATE ${SANITIZE_FLAGS}) | ||
target_link_options(${TopicTree} PRIVATE ${SANITIZE_FLAGS}) | ||
|
||
target_compile_options(${HttpRouter} PRIVATE ${SANITIZE_FLAGS}) | ||
target_link_options(${HttpRouter} PRIVATE ${SANITIZE_FLAGS}) | ||
|
||
target_compile_options(${BloomFilter} PRIVATE ${SANITIZE_FLAGS}) | ||
target_link_options(${BloomFilter} PRIVATE ${SANITIZE_FLAGS}) | ||
|
||
target_compile_options(${ExtensionsNegotiator} PRIVATE ${SANITIZE_FLAGS}) | ||
target_link_options(${ExtensionsNegotiator} PRIVATE ${SANITIZE_FLAGS}) | ||
|
||
target_compile_options(${HttpParser} PRIVATE ${SANITIZE_FLAGS}) | ||
target_link_options(${HttpParser} PRIVATE ${SANITIZE_FLAGS}) | ||
|
||
# Performance target | ||
add_custom_target(${PROJECT_NAME}performance | ||
COMMAND ${CMAKE_COMMAND} -E env CXXFLAGS=-O3 ${CMAKE_COMMAND} --build . --target HttpRouter | ||
COMMAND ./HttpRouter | ||
) | ||
|
||
# Smoke test target | ||
add_custom_target(${PROJECT_NAME}smoke | ||
COMMAND ../Crc32 & | ||
COMMAND ${CMAKE_COMMAND} -E sleep 1 | ||
COMMAND ~/.deno/bin/deno run --allow-net smoke.mjs | ||
COMMAND node smoke.mjs | ||
COMMAND pkill Crc32 | ||
) |