부록 A. 개발자를 위한 팁


모든 좋은 프로그래밍 텍스트북은 메모리 할당 및 특정 기능의 성능에 대한 문제를 다룹니다. 소프트웨어를 개발할 때 소프트웨어가 실행되는 시스템에서 전력 소비를 증가시킬 수 있는 문제를 알고 있어야 합니다. 이러한 고려 사항은 모든 코드 라인에 영향을 미치지는 않지만 성능을 위해 자주 병목 현상이 발생하는 영역에서 코드를 최적화할 수 있습니다.
종종 문제가되는 일부 기술은 다음과 같습니다.
  • 스레드 사용.
  • 불필요한 CPU 발생 및 작동을 효율적으로 사용하지 않습니다. 잠길 필요가 있는 경우 한 번에 모든 작업을 수행하고 가능한 한 빨리 유휴 상태로 두십시오.
  • 불필요하게 [f]sync() 사용.
  • 불필요한 활성 폴링 또는 짧은 일반 타임아웃을 사용합니다. 대신 이벤트로 돌아갑니다.
  • wake-up을 효율적으로 사용하지 않습니다.
  • 비효율적인 디스크 액세스. 디스크 액세스가 자주 발생하지 않도록 큰 버퍼를 사용합니다. 한 번에 하나의 큰 블록을 작성합니다.
  • 타이머를 비효율적으로 사용합니다. 가능한 경우 애플리케이션(또는 시스템 전반에 걸쳐)을 그룹화합니다.
  • 과도한 I/O, 전력 사용량 또는 메모리 사용량(메모리 누출 포함)
  • 불필요한 계산을 수행합니다.
다음 섹션에서는 이러한 영역 중 일부를 자세히 설명합니다.

A.1. 스레드 사용

스레드를 사용하면 애플리케이션이 개선되고 빨라지지만 모든 경우에 해당되지는 않습니다.

Python

Python은 Global Lock Interpreter 사용[1]따라서 스레드는 더 큰 I/O 작업에 대해서만 유용합니다. unladen-swallow [2] 더 빠른 Python 구현으로 코드를 최적화할 수 있습니다.

Perl

Perl 스레드는 원래 포크 없이 시스템에서 실행되는 애플리케이션을 위해 생성되었습니다(예: 32비트 Windows 운영 체제가 있는 시스템). Perl 스레드에서는 모든 단일 스레드(Copy On Write)에 대한 데이터가 복사됩니다. 사용자가 데이터 공유 수준을 정의할 수 있어야 하므로 데이터는 기본적으로 공유되지 않습니다. 데이터 공유의 경우 threads::shared 모듈을 포함해야 합니다. 그러나 데이터는 복사될 뿐만 아니라(쓰기 시 복사) 모듈은 데이터에 대한 연결된 변수도 생성하므로 더 많은 시간이 걸리며 속도가 더 느립니다. [3]

C

C 스레드는 동일한 메모리를 공유하고 각 스레드에는 자체 스택이 있으며 커널은 새 파일 설명자를 생성하고 새 메모리 공간을 할당할 필요가 없습니다. C는 더 많은 스레드에 대한 더 많은 CPU 지원을 실제로 사용할 수 있습니다. 따라서 스레드의 성능을 최대화하려면 C 또는 C++와 같은 하위 수준 언어를 사용합니다. 스크립팅 언어를 사용하는 경우 C 바인딩 작성을 고려하십시오. profilers를 사용하여 코드의 잘못된 부분을 식별합니다. [4]

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.