Trawling

최신기사

AI, 개발 도구, 오픈소스, 보안과 인프라의 변화와 이용 조건을 설명하는 최신 기사와 해설입니다.

발행

Rust의 derive는 종종 inline을 암시합니다

Rust에서 `#[derive(Debug)]`를 쓰면 생성된 구현에 `#[inline]`이 붙는 경우가 많습니다. 간단한 구현에서는 성능에 도움이 되지만, 큰 오류 타입의 `Debug` 구현을 반복해서 인라인하면 바이너리 크기가 커질 수 있습니다. 글쓴이는 uv 바이너리에서 특정 구현의 인라인을 막아 약 160KB를 줄였습니다.

발행

`foldl`과 `foldr`의 차이

`foldl`과 `foldr`는 리스트를 훑는 방향보다 결합 순서가 다르며, Haskell의 지연 평가에서는 누산 함수의 엄격성에 따라 시간·공간 사용과 스트리밍 동작이 달라집니다. 누산 함수가 엄격하면 `foldl'`, 두 번째 인자에 느슨하면 `foldr`를 쓰는 기준을 설명합니다.

발행

모든 개발자가 SIMD를 알아야 하는 이유

Mitchell Hashimoto는 SIMD를 대량의 연속 데이터를 처리하는 일반적인 최적화 기법으로 소개하며, 벡터화 코드의 공통 구조를 다섯 단계로 설명합니다. Ghostty의 코드포인트 탐색 사례에서는 AVX2 환경의 실제 처리량이 약 5배 향상됐지만, 먼저 측정하고 컴파일러의 자동 벡터화 결과도 확인해야 한다고 말합니다.

발행

최선 노력형 배타 잠금은 대체 어디에 쓸까요?

CockroachDB의 SERIALIZABLE 트랜잭션에서 SELECT ... FOR UPDATE는 정확성을 보장하는 잠금이 아니라 경합을 줄이는 최선 노력형 잠금입니다. 정확성은 트랜잭션 재시도가 보장하고, 잠금은 비싼 작업을 반복하는 상황을 줄이는 성능 최적화로 쓰입니다.

발행

.NET AWS Lambda 메모리를 늘려 콜드 스타트 줄이기

AWS Lambda의 메모리 할당량을 512MB에서 1,769MB로 높이자 .NET 함수의 콜드 스타트와 웜 실행이 모두 약 3.2배 빨라졌습니다. Lambda는 메모리 설정에 따라 CPU도 함께 배정하므로, CPU 부족이 원인일 때 메모리 증량이 성능과 비용을 함께 개선할 수 있습니다.

발행

CSS를 더 보내 사이트 성능을 개선하기

GitHub는 Primer의 CSS-in-JS를 CSS Modules로 바꾸고, `sx` 속성과 테마 처리까지 단계적으로 옮겼습니다. Primer의 서버 렌더링 시간은 55%, 컴포넌트 초기화 시간은 25% 줄었으며, 회사 전체에서 마이그레이션을 진행한 경험과 성능 개선 수치를 공개했습니다.

발행

리눅스 커널 LZ4 코드 재동기화로 성능과 유지보수 개선

삼성의 Michal Wilczynski가 커널 내 LZ4 코드를 최신 upstream 코드와 동기화하는 패치 묶음을 제출했습니다. EROFS 읽기 처리량은 클러스터 크기에 따라 약 11~14% 높아졌고, 다른 커널 내 벤치마크에서는 최대 21% 향상을 보였습니다.

발행

벤치마크 측정값의 잡음을 줄이는 서버 튜닝

같은 벤치마크도 CPU 스케줄링과 클록 변화에 따라 실행 시간이 달라집니다. 코어 고정, 주파수 governor 설정, SMT와 turbo 비활성화 순으로 서버를 조정해 변동계수(CV)를 2.72%에서 0.26%로 낮춘 과정을 보여줍니다.

발행

이것이 현대적인 웹사이트입니다

이 글은 블로그·문서·홍보 페이지에 프레임워크와 대규모 도구 체인을 얹기보다 HTML과 CSS의 기본 기능부터 쓰자고 주장합니다. 시맨틱 태그, 메타데이터, 리소스 힌트, 반응형 이미지 등 브라우저가 이미 제공하는 기능을 사례로 들며, 필요한 만큼만 도구를 더하자고 권합니다.

발행

Postgres의 SELECT DISTINCT는 데이터가 커지면 느려집니다

Postgres에서 SELECT DISTINCT는 고유한 값이 적어도 조건에 맞는 인덱스 행을 모두 읽으므로, 처리 시간이 전체 행 수에 따라 늘어납니다. DBOS는 재귀 CTE로 인덱스에서 다음 고유 값을 하나씩 찾는 우회 쿼리를 제시하며, 파티션 수가 고정된 벤치마크에서 행 수가 늘어도 지연 시간이 거의 변하지 않았다고 설명합니다.

발행

Git 2.55 reftable 백엔드, 참조 1만 개 생성 시간 650ms에서 40ms로 단축

Git 2.55의 reftable은 참조를 대량으로 만들 때 기존 files 백엔드보다 10~60배 빠르고 디스크도 덜 씁니다. 하지만 여러 프로세스가 동시에 참조를 만들면 기본 잠금 대기 시간 탓에 실패가 잦아져, CI처럼 쓰기가 몰리는 저장소는 마이그레이션 전에 동시성 테스트가 필요합니다.

발행

10년간 GCC와 Clang 성능은 어떻게 달라졌나

GCC 4~16과 Clang 3~23으로 50개 테스트를 담은 C 벤치마크를 빌드해 실행 시간과 컴파일 시간을 비교했습니다. GCC는 실행 시간이 5% 줄었지만 컴파일 시간은 66% 늘었고, Clang은 각각 8%, 4% 줄었습니다.

발행

중간 AST 없이 JSON 객체 파싱하기

JSON 라이브러리는 보통 먼저 JSON AST를 만든 뒤 도메인 데이터로 변환합니다. 이 글은 Haskell의 지연 평가와 비트셋을 이용해 중간 표현을 생략하는 파서를 구현하고, 마이크로벤치마크에서 약 3배 빠른 결과를 얻었습니다.

발행

AMD Ryzen은 2년 만에 어떻게 50% 빨라졌을까요?

2022년형 Ryzen 7 5800X3D와 2024년형 9800X3D를 비교하면 Geekbench 6 점수는 단일 코어에서 47%, 전체 코어에서 58% 높아집니다. 클럭 상승만으로 설명하기 어려운 차이는 넓어진 실행부와 커진 캐시, Zen 5의 512비트 SIMD 처리 폭에서 나옵니다.

발행

Laravel은 생각만큼 무겁지 않습니다

Laravel 13의 요청 메모리를 PHP-FPM에서 측정한 결과, OPcache를 켠 기본 경로의 피크는 0.66MB였고 프레임워크 부팅분은 316KB였습니다. 반면 Eloquent 모델 1만 건을 한꺼번에 읽으면 약 18MB가 들었습니다. 메모리를 줄이는 데는 프레임워크 설정 조정보다 조회 결과를 나눠 읽는 일이 훨씬 큰 효과를 냅니다.

발행

Linux 7.4의 간단한 최적화로 VFS do_open() 성능 최대 39% 향상

Linux 커널의 VFS 파일 열기 경로인 do_open()에서 중복으로 수행하던 dentry 참조 작업을 제거하는 패치가 준비되고 있습니다. 20코어 VM에서 같은 파일을 읽기 전용으로 여는 will-it-scale 벤치마크를 실행한 결과 초당 처리량이 최대 39% 증가했습니다.