«llvm-codegen» 태그된 질문

5
C ++ 표준은 초기화되지 않은 bool이 프로그램을 중단시킬 수 있습니까?
C ++ 의 "정의되지 않은 동작" 은 컴파일러가 원하는 모든 작업을 수행 할 수 있다는 것을 알고 있습니다. 그러나 코드가 충분히 안전하다고 가정하면서 충돌이 발생했습니다. 이 경우 실제 문제는 특정 컴파일러를 사용하는 특정 플랫폼에서만 최적화가 활성화 된 경우에만 발생했습니다. 문제를 재현하고 최대한 단순화하기 위해 여러 가지를 시도했습니다. 여기라는 함수의 추출물의 …

1
두 개의 가변 참조가 별칭을 지정할 수 없다고 가정 할 때 Rust 컴파일러가 코드를 최적화하지 않는 이유는 무엇입니까?
내가 아는 한, 참조 / 포인터 앨리어싱은 컴파일러가 최적화 된 코드를 생성하는 능력을 방해 할 수 있는데, 두 참조 / 포인터가 실제로 앨리어스 인 경우 생성 된 바이너리가 올바르게 동작해야하기 때문입니다. 예를 들어 다음 C 코드에서 void adds(int *a, int *b) { *a += *b; *a += *b; } 로 …

2
240 개 이상의 요소가있는 어레이를 반복 할 때 성능에 큰 영향을 미치는 이유는 무엇입니까?
Rust에서 배열에 대해 합 루프를 실행할 때 CAPACITY> = 240 일 때 성능이 크게 저하되는 것을 발견했습니다 . CAPACITY= 239가 약 80 배 빠릅니다. Rust가 "짧은"배열에 대해 수행하는 특수 컴파일 최적화가 있습니까? 로 컴파일되었습니다 rustc -C opt-level=3. use std::time::Instant; const CAPACITY: usize = 240; const IN_LOOPS: usize = 500000; fn …

4
Rust의 128 비트 정수`i128`은 64 비트 시스템에서 어떻게 작동합니까?
Rust는 128 비트 정수를 가지며, 데이터 타입으로 표시됩니다 i128( u128부호없는 정수). let a: i128 = 170141183460469231731687303715884105727; Rust는 이러한 i128값을 64 비트 시스템에서 어떻게 작동합니까 ? 예를 들어 어떻게 이것들을 산술합니까? 내가 아는 한 x86-64 CPU의 하나의 레지스터에 값을 맞출 수 없으므로 컴파일러는 어떻게 든 하나의 i128값에 2 개의 레지스터를 사용 …

1
Rust에서 인라인은 언제 사용해야합니까?
Rust에는 다음 세 가지 유형 중 하나에서 사용할 수있는 "인라인"속성이 있습니다. #[inline] #[inline(always)] #[inline(never)] 언제 사용해야합니까? 녹 참조, 우리는 볼 인라인 섹션의 속성을 말을 컴파일러는 내부 휴리스틱을 기반으로 함수를 자동으로 인라인합니다. 함수를 잘못 인라인하면 실제로 프로그램 속도가 느려질 수 있으므로주의해서 사용해야합니다. Rust 내부 포럼에서 huon은 inline 지정 에 대해서도 보수적 …

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