반응형

C 6

분기 인식 프로그래밍

분기 인식 프로그래밍 분기 예측 오류가 애플리케이션 성능의 핫 병목 현상이 될 수 있다는 것을 알고 있습니다.제가 볼 수 있듯이, 사람들은 종종 문제를 드러내는 어셈블리 코드를 보여주고 프로그래머들은 보통 분기가 가장 자주 어디로 갈지 예측할 수 있고 분기의 잘못된 예측을 피할 수 있습니다. 제 질문은 다음과 같습니다. 일부 고급 프로그래밍 기법(즉, 어셈블리 없음)을 사용하여 분기 오예측을 방지할 수 있습니까? 고급 프로그래밍 언어로 지점 친화적인 코드를 생성하려면 무엇을 염두에 두어야 합니까(저는 주로 C와 C++에 관심이 있습니다)? 코드 예제 및 벤치마크를 환영합니다. 사람들은 종종... 그리고 프로그래머들은 보통 지점이 어디로 갈 수 있는지 예측할 수 있다고 말합니다. (*) 숙련된 프로그래머들..

programing 2023.06.14

배열 첨자 안에 "휘발성" 키워드가 나타나는 목적은 무엇입니까?

배열 첨자 안에 "휘발성" 키워드가 나타나는 목적은 무엇입니까? cppreference를 검색하는 동안 다음과 같은 함수 매개 변수에서 이상한 유형의 배열을 보았습니다. void f(double x[volatile], const double y[volatile]); 그래서, 그 목적은 무엇입니까?volatile배열 첨자 안에 키워드가 표시됩니까?그것은 무엇을 합니까?그volatile키워드는 함수 매개 변수의 배열 유형을 선언하는 데 사용됩니다. 여기서,double x[volatile]와 동등합니다.double * volatile x. cpp 기본 설정은 다음과 같습니다. 함수 선언에서 키워드는 함수 매개 변수의 배열 유형을 선언하는 데 사용되는 대괄호 안에 나타날 수 있습니다.배열 유형이 변환되는 포인터..

programing 2023.06.14

Windows에서 strptime()과 동등합니까?

Windows에서 strptime()과 동등합니까? 이에 상응하는 효과적인 구현이 있습니까?strptime()Windows에 사용할 수 있습니까?안타깝게도 이 POSIX 기능은 사용할 수 없는 것 같습니다. strptime - summary에 대한 그룹 설명 열기: 다음과 같은 텍스트 문자열을 변환합니다."MM-DD-YYYY HH:MM:SS"의 상태가.tm struct와 반대되는.strftime().코드를 이식하거나 프로젝트를 강화하지 않으려면 다음 작업을 수행할 수 있습니다. 사용하여 날짜 구문 분석sscanf 그런 다음 정수를 복사합니다.struct tm(월에서 1, 연도에서 1900으로 계산 - 월은 0-11이고 연도는 1900으로 시작) 마지막으로, 사용합니다.mktimeUTC 에포크 정수를 구함..

programing 2023.06.09

목표-C 클래스에서 C 함수 혼합

목표-C 클래스에서 C 함수 혼합 나는 Objective-C 클래스를 작성하고 있지만 C로 작성된 API를 사용합니다.C 호출을 Objective-C 호출과 혼합하면 문제가 거의 발생하지 않으므로 대부분 문제가 없습니다. 그러나 API 호출 중 하나에는 콜백 방법(예)이 필요합니다. success = CFHostSetClient(host, MyCFHostClientCallBack, &context); 어디에MyCFHostClientCallBack는 다음과 같이 정의된 C 함수입니다. static void MyCFHostClientCallBack(CFHostRef host, CFHostInfoType typeInfo, const CFStreamError *error, void *info); 이를 대신하여 ..

programing 2023.06.09

여러 스레드가 동일한 메모리에 액세스하지 않도록 하여 잠금을 방지할 수 있습니까?

여러 스레드가 동일한 메모리에 액세스하지 않도록 하여 잠금을 방지할 수 있습니까? 예를 들어 배열이 크고 여러 스레드로 내용을 처리하려고 합니다.중복이 없도록 각 스레드를 특정 섹션에 위임하면 스레드가 어레이 외부의 다른 메모리에 액세스하지 않는다고 가정할 때 잠금이 필요하지 않습니까? 다음과 같은 것(의사 코드): global array[9000000]; do_something(chunk) { for (i = chunk.start; i < chunk.end; i++) //do something with array } main() { chunk1 = {start: 0, end: 5000000}; chunk2 = {start: 5000000, end: 9000000}; start_thread(thread1..

programing 2023.06.09

긴 형식의 printf 변환 지정자는 무엇입니까?

긴 형식의 printf 변환 지정자는 무엇입니까? 그printf함수는 다음과 같은 인수 유형을 사용합니다.%d또는%i잠깐 동안signed int하지만, 나는 아무것도 보이지 않는다.long가치.설치하다l(소문자 L)이 지정자 바로 앞에 표시됩니다. unsigned long n; long m; printf("%lu %ld", n, m); 제 생각엔 unsigned long n; printf("%lu", n); // unsigned long 또는 long n; printf("%ld", n); // signed long 대부분의 플랫폼에서는long그리고.int같은 크기(32비트)입니다.다만, 독자적인 형식 지정자가 있습니다. long n; unsigned long un; printf("%ld", n); // ..

programing 2023.04.15
반응형