«compiler-optimization» 태그된 질문

컴파일러 최적화에는 런타임이나 개체 크기 또는 둘 다를 줄이기 위해 컴파일러를 조정하는 작업이 포함됩니다. 이는 컴파일러 인수 (예 : CFLAGS, LDFLAGS), 컴파일러 플러그인 (예 : DEHYDRA) 또는 컴파일러에 대한 직접 수정 (예 : 소스 코드 수정)을 사용하여 수행 할 수 있습니다.

13
최적화되지 않는 무한 빈 루프를 만들려면 어떻게해야합니까?
C11 표준은 일정한 제어식을 가진 반복문이 최적화되어서는 안된다는 것을 암시하는 것으로 보입니다. 이 답변 에서 조언을 얻었습니다. 표준 초안의 섹션 6.8.5를 구체적으로 인용합니다. 제어 표현식이 상수 표현식이 아닌 반복문은 구현에 의해 가정 될 수 있습니다. 이 답변에서 루프와 같은 루프 while(1) ;는 최적화되지 않아야한다고 언급합니다 . 그렇다면 ... Clang / …

3
이 포인터를 사용하면 핫 루프에서 이상한 최적화 해제가 발생합니다.
최근에 이상한 최적화 해제 (또는 최적화 기회를 놓친 경우)를 발견했습니다. 3 비트 정수에서 8 비트 정수로 구성된 배열을 효율적으로 풀기 위해이 함수를 고려하십시오. 각 루프 반복에서 16 개의 int를 풉니 다. void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t = *reinterpret_cast<uint64_t*>(source); target[0] = t & …

11
함수에서 조기 반환의 효율성
이것은 경험이없는 프로그래머로서 자주 접하는 상황이며 특히 최적화하려는 야심 차고 속도 집약적 인 프로젝트에 대해 궁금합니다. C와 유사한 주요 언어 (C, objC, C ++, Java, C # 등) 및 일반적인 컴파일러의 경우이 두 함수가 효율적으로 실행됩니까? 컴파일 된 코드에 차이가 있습니까? void foo1(bool flag) { if (flag) { //Do stuff …

3
Clang 최적화 수준
GCC에서 매뉴얼이 무엇인지 설명하고 -O3, -Os등 특정 최적화 인수의 관점에서로 번역 ( -funswitch-loops, -fcompare-elim, 등) clang에 대한 동일한 정보를 찾고 있습니다. 내가 검토 한 온라인 및에 man clang있는 전용 (일반 정보를 제공합니다 -O2개를 최적화를 -O1, -Os속도 최적화, ...) 또한 스택 오버플로 여기에보고 발견 이 ,하지만 난 인용 된 소스 파일의 …


3
코드가 꼬리 호출 최적화를 적극적으로 방지하려는 이유는 무엇입니까?
질문의 제목은 약간 이상 할 수 있지만 제가 아는 한 테일 콜 최적화에 반대하는 내용은 전혀 없습니다. 그러나 오픈 소스 프로젝트를 탐색하는 동안 컴파일러가 테일 호출 최적화를 수행하는 것을 적극적으로 중지하려는 몇 가지 기능 (예 : 이러한 해킹으로 가득 찬 CFRunLoopRef 구현)을 이미 발견했습니다 . 예를 들면 : static void …


2
% 연산자보다 빠른 분할 성 테스트?
컴퓨터에서 궁금한 것을 발견했습니다. * 필기 분할 성 테스트는 %작업자 보다 훨씬 빠릅니다 . 최소한의 예를 고려하십시오. * AMD Ryzen Threadripper 2990WX, GCC 9.2.0 static int divisible_ui_p(unsigned int m, unsigned int a) { if (m <= a) { if (m == a) { return 1; } return 0; } m …

1
왜 GCC가 배열의 초기화를 초기화하여 0이 아닌 요소를 포함하여 모든 것을 먼저 0으로 채우는가?
왜 gcc는 나머지 96 개의 정수 대신에 전체 배열을 0으로 채우는가? 0이 아닌 이니셜 라이저는 모두 배열의 시작 부분에 있습니다. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the compiler to materialize a[] in memory …

2
Java 8 : Class.getName ()이 문자열 연결 체인을 느리게합니다.
최근에 문자열 연결에 관한 문제가 발생했습니다. 이 벤치 마크는 다음을 요약합니다. @OutputTimeUnit(TimeUnit.NANOSECONDS) public class BrokenConcatenationBenchmark { @Benchmark public String slow(Data data) { final Class<? extends Data> clazz = data.clazz; return "class " + clazz.getName(); } @Benchmark public String fast(Data data) { final Class<? extends Data> clazz = data.clazz; final String …

2
컴파일러가 사용하지 않는 정적 thread_local 클래스 멤버를 무시 했습니까?
클래스에서 스레드 등록을 원하므로 thread_local기능 검사를 추가하기로 결정했습니다 . #include <iostream> #include <thread> class Foo { public: Foo() { std::cout << "Foo()" << std::endl; } ~Foo() { std::cout << "~Foo()" << std::endl; } }; class Bar { public: Bar() { std::cout << "Bar()" << std::endl; //foo; } ~Bar() { std::cout …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.