2014-09-12 3 views
0
내 .H 파일에이 코드가

로 코드를 프로파일 링 :표준 : mt19937으로 나왔죠 및 gprof를

std::mt19937 rng(time(NULL)); // mersenne numbers 
int random(int n) { 
    std::uniform_int_distribution<int> distribution(0, n); 
    return distribution(rng); 
} 

을하지만 난 결코 전화 random().

내가 gprof를 가진 코드를 프로파일 링하고, 내가 얻을 : 무슨 일

Flat profile: 

Each sample counts as 0.01 seconds. 
    % cumulative self    self  total   
time seconds seconds calls s/call s/call name  
99.13  2.28  2.28  1  2.28  2.28 random(int) 

?

+0

함수 본문을'return 0; 또는'std :: this_thread :: sleep_for (std :: chrono :: seconds (1));로 대체하면 여전히 나타 납니까? return 0;'? – stefan

+0

컴파일러를 적극적으로 인라인하는 경우에는 rng가 무작위로 일부 코드를 사용할 수있는 경우 rng 및 random 코드가 혼합 될 수 있습니다. -O0을 사용하여 다시 시도하십시오 – Surt

+0

@Surt that 's it! 스테판, 다른 해결책이 효과가 있었기 때문에, 나는 너의 것을 시험하지 않았다. 서둘러, 너는 그 질문에 답할 수있어, 나는 그것을 받아 들일 수있다. – gsamaras

답변

1

컴파일러를 적극적으로 인라인하는 경우 컴파일러가 적극적으로 인라인을 사용하므로 rng가 임의의 코드를 임의로 사용할 수있는 경우 rng 및 임의 코드를 혼합 할 수 있습니다. 다시 사용해보십시오 -O0