«optimization» 태그된 질문

최적화는 방법이나 디자인을 개선하는 행위입니다. 프로그래밍에서 최적화는 일반적으로 알고리즘 속도를 높이거나 필요한 리소스를 줄이는 형태를 취합니다. 최적화의 또 다른 의미는 기계 학습에 사용되는 수치 최적화 알고리즘입니다.


22
설정된 최하위 비트의 위치
정수로 설정된 최하위 비트의 위치를 ​​결정하는 효율적인 방법을 찾고 있습니다. 예를 들어 0x0FF0의 경우 4가됩니다. 사소한 구현은 다음과 같습니다. unsigned GetLowestBitPos(unsigned value) { assert(value != 0); // handled separately unsigned pos = 0; while (!(value & 1)) { value >>= 1; ++pos; } return pos; } 그것에서 일부 사이클을 짜내는 …

27
C의 정수에서 가장 높은 설정 비트 (msb)를 찾는 가장 빠르고 효율적인 방법은 무엇입니까?
정수 n이 있고 최상위 비트의 위치를 ​​알고 싶다면 (즉, 최하위 비트가 오른쪽에 있으면 가장 먼 왼쪽 비트 인 1의 위치를 ​​알고 싶습니다), 가장 빠르고 효율적인 방법은 무엇입니까? POSIX가 ffs()첫 번째 세트 비트를 찾기 위해 strings.h 의 메서드를 지원한다는 것을 알고 있지만 해당하는 것 같지 않습니다.fls() 메서드 . 내가 놓친 정말 …



3
C ++ 컴파일러가이 조건부 부울 할당을 무조건 할당으로 최적화하지 않는 이유는 무엇입니까?
다음 기능을 고려하십시오. void func(bool& flag) { if(!flag) flag=true; } flag에 유효한 부울 값 true이 있으면 다음과 같이 무조건으로 설정하는 것과 동일합니다 . void func(bool& flag) { flag=true; } 그러나 gcc도 clang도 이런 방식으로 최적화하지 않습니다. 둘 다 -O3최적화 수준 에서 다음을 생성합니다 . _Z4funcRb: .LFB0: .cfi_startproc cmp BYTE PTR …
117 c++  optimization 

30
컴파일러 / 최적화 프로그램이 더 빠른 프로그램을 만들 수 있도록하는 코딩 방법
수년 전, C 컴파일러는 특별히 똑똑하지 않았습니다. 해결 방법으로 K & R은 register 키워드를 발명하여 컴파일러에 힌트를 주었으므로이 변수를 내부 레지스터에 유지하는 것이 좋습니다. 그들은 또한 더 나은 코드를 생성하기 위해 3 차 연산자를 만들었습니다. 시간이 지남에 따라 컴파일러는 성숙했습니다. 그들은 흐름 분석을 통해 당신이 할 수있는 것보다 레지스터에 어떤 …

4
std :: swap () 오버로드 방법
std::swap()정렬 및 할당 중에 많은 표준 컨테이너 (예 : std::list및 std::vector)에서 사용됩니다. 그러나의 표준 구현 swap()은 매우 일반화되어 사용자 정의 유형에 대해서는 비효율적입니다. 따라서 std::swap()사용자 정의 유형별 구현 으로 오버로딩 하여 효율성을 얻을 수 있습니다 . 그러나 표준 컨테이너에서 사용되도록 어떻게 구현할 수 있습니까?

13
C ++에서 변수를 캐시해야합니까, 아니면 컴파일러가 최적화를 수행하도록해야합니까? (앨리어싱)
다음 코드를 고려하십시오 ( p유형 unsigned char*이며 bitmap->width정수 유형이며 정확히 알 수 없으며 사용중인 일부 외부 라이브러리의 버전에 따라 다릅니다). for (unsigned x = 0; x < static_cast<unsigned>(bitmap->width); ++x) { *p++ = 0xAA; *p++ = 0xBB; *p++ = 0xCC; } 최적화 할 가치가 있습니까 [..] 다음과 같이 작성하여보다 효율적인 결과를 …

14
JPEG 최적화 도구? [닫은]
닫은. 이 질문은 Stack Overflow 지침을 충족하지 않습니다 . 현재 답변을 받고 있지 않습니다. 이 질문을 개선하고 싶으십니까? Stack Overflow의 주제에 맞게 질문을 업데이트하세요 . 휴일 삼년 전에 . 이 질문 개선 빌드 환경에 통합 할 수있는 JPEG를 자동으로 무손실 최적화하는 도구 (가급적이면 명령 줄)를 알고 있습니까? PNG의 경우 현재 …
114 optimization  jpeg 

3
CUDA 커널의 그리드 및 블록 차원을 어떻게 선택합니까?
이것은 CUDA 그리드, 블록 및 스레드 크기를 결정하는 방법에 대한 질문입니다. 이것은 여기에 게시 된 질문에 대한 추가 질문 입니다. 이 링크를 따라 가면 talonmies의 답변에 코드 조각이 포함되어 있습니다 (아래 참조). 나는 "조율과 하드웨어 제약에 의해 일반적으로 선택되는 값"이라는 코멘트를 이해하지 못한다. CUDA 문서에서 이것을 설명하는 좋은 설명이나 설명을 …

6
.NET / C #이 꼬리 호출 재귀를 최적화하지 않는 이유는 무엇입니까?
어떤 언어가 꼬리 재귀를 최적화하는지에 대한 질문을 찾았습니다 . 가능할 때마다 C #이 꼬리 재귀를 최적화하지 않는 이유는 무엇입니까? 구체적인 경우이 메서드가 루프로 최적화되지 않는 이유는 무엇입니까 ( 중요한 경우 Visual Studio 2008 32 비트) ?: private static void Foo(int i) { if (i == 1000000) return; if (i % …

3
주석 만 변경된 두 개의 프로그램 바이너리가 gcc에서 정확히 일치하지 않는 이유는 무엇입니까?
두 개의 C 프로그램을 만들었습니다. 프로그램 1 int main() { } 프로그램 2 int main() { //Some Harmless comments } AFAIK, 컴파일 할 때 컴파일러 (gcc)는 주석과 중복 된 공백을 무시해야하므로 출력이 유사해야합니다. 그러나 출력 바이너리의 md5sum을 확인했을 때 일치하지 않습니다. 또한 최적화 컴파일 시도 -O3하고 -Ofast있지만 아직 일치하지 않습니다. …


4
결과가 무엇이든 상관없이 0으로 나누기를 지원하는 가장 빠른 정수 나눗셈은 무엇입니까?
요약: 계산하는 가장 빠른 방법을 찾고 있습니다 (int) x / (int) y 예외없이 y==0. 대신 임의의 결과를 원합니다. 배경: 이미지 처리 알고리즘을 코딩 할 때 종종 (누적 된) 알파 값으로 나눌 필요가 있습니다. 가장 간단한 변형은 정수 산술을 사용하는 일반 C 코드입니다. 내 문제는 일반적으로 결과 픽셀에 대해 0으로 나누기 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.