이식 가능한 독립형 C 라이브러리 및 데이터 구조. (C99)
각 폴더는 단일 헤더/소스 쌍을 포함하는 독립형입니다. 없다
라이브러리용으로 빌드하고 원하는 파일을 복사하기만 하면 됩니다.
예를 들어, 로거를 원하면 sc_log.h 및 sc_log.c를 프로젝트에 복사하세요.
Linux에서는 100% 분기 적용 범위가 있으며 CI는 다음에서 실행됩니다.
운영 체제: 리눅스, MacOS, FreeBSD 및 Windows 컴파일러: GCC, Clang, MSVC 아치: x64, aarch64, armv6(32비트), armv7(32비트), ppc64le, s390x(빅 엔디안), riscv64 살균제: valgrind 및 clang/gcc 살균제(주소, 정의되지 않음, 스레드)
도서관 | 설명 |
---|---|
정렬 | 일반 배열/벡터 |
완충기 | 변수 인코딩/디코딩을 위한 버퍼, 프로토콜/직렬화 구현에 가장 적합 |
상태 | Posix 및 Windows용 조건 래퍼 |
crc32 | Crc32c, 가능한 경우 crc32c CPU 명령어 사용 |
더미 | 최대 힙/우선순위 큐로도 사용할 수 있는 최소 힙 |
이니 | 이니 파서 |
연결리스트 | 방해가 되는 연결 목록 |
나무꾼 | 나무꾼 |
지도 | 고성능 개방형 주소 지정 해시맵 |
메모리 맵 | Posix 및 Windows용 Mmap 래퍼 |
뮤텍스 | Posix 및 Windows용 뮤텍스 래퍼 |
옵션 | 명령줄 인수 파서. 아주 기본적인 것 |
성능 | perf_event_open()을 통해 성능 카운터 정보를 얻는 벤치마크 유틸리티 |
대기줄 | 대기열 제거/스택/목록으로도 사용할 수 있는 일반 대기열 |
sc | 유틸리티 기능 |
신호 | 신호 안전 snprintf 및 신호 처리기(CTRL+C 처리, 충돌 시 역추적 인쇄 등) |
소켓 | Posix 및 Windows용 파이프/tcp 소켓(unix 도메인 소켓) /Epoll/Kqueue/WSAPoll |
끈 | 접두사가 붙은 길이, null로 끝나는 C 문자열. |
실 | Posix 및 Windows용 스레드 래퍼. |
시간 | Posix 및 Windows용 시간 및 절전 기능 |
시간제 노동자 | 빠른 폴링/취소 작업으로 해시된 타이밍 휠 구현 |
우리 | 기본 URI 파서 |
라이브러리 X보다 나은가요?
저는 고성능 서버측 애플리케이션을 위해 이러한 라이브러리를 자주 사용합니다. 또한,
나는 읽기 쉽고 디버깅하기 쉬운 코드에 관심이 있습니다. 요약하면, 이 라이브러리는 다음을 보여줍니다.
성능/API 디자인/가독성에 대한 내 취향(절충점)입니다. 당신은 할 수도 있고 할 수도 있습니다
마음에 들지 않습니다.
여기 X에서 API를 변경하면 사용하기 더 쉬워지나요?
끌어오기 요청을 보내세요. 하지만 정의되지 않은 내용을 소개하지 않도록 주의하세요.
행동. 특히 일반 라이브러리에 더 나은 API를 제공하는 것이 가능합니다.
정의되지 않은 동작에 관심이 없다면. 나는 그것을 피하려고 노력합니다.
이러한 라이브러리를 사용하는 가장 효율적인 방법은 무엇입니까?
다른 코드와 마찬가지로. 프로젝트에 소스 파일로 추가하고 이상적으로 사용하십시오.
-O3 -flto + PGO. 하지만 사용 사례에는 아무런 차이가 없을 수도 있습니다.
라이브러리 X가 어떤 제품에 사용됩니까?
일부 라이브러리는 프로덕션에 사용되지만 항상 직접 테스트해 보시기 바랍니다.
출시가 있나요?
마스터 브랜치를 이용해주세요. 안정적인 것으로 간주됩니다.
API를 안정적으로 유지할 예정인가요?
안정적인 API를 기대하지 마십시오. 이 도서관들은 꽤
작으며(대부분 수백 줄의 코드 미만) 이상적으로는
코드를 읽고 코드가 수행하는 작업을 이해하고 이를 사용자의 상황에 맞게 조정해야 합니다.
필요합니다. 따라서 맹목적으로 라이브러리를 업데이트해서는 안 됩니다. 나는 당신이 처리하기를 기대
가능한 모든 API 차이점을 쉽게 확인할 수 있습니다. 그 말대로, 나는 최선을 다해 지킬 것이다.
API가 안정적입니다.