클라이언트가 출력을 디버깅하는 데 도움이되도록 자주 정보를 출력해야하는 코드가 있습니다. 이는 매우 수학적입니다.컴파일러 상수, 최적화 및 성능
성능상의 이유로 프로덕션에서 추적 기능을 사용하지 않으려 고하지만, 자주 주석 처리를해야하는 번거 로움이 있습니다.
I ...
using System.Diagnostics;
const bool TRACING_ENABLED = false;
//math math math....
Trace.WriteLineIf(TRACING_ENABLED, "Minimum Nitrogen Yield: " + minYieldNitrogen);
Trace.WriteLineIf(TRACING_ENABLED, "Minimum Water Yield: " + minYieldWater);
Trace.WriteLineIf(TRACING_ENABLED, "Minimum Seed Yield: " + minYieldSeed);
//more math math trace math trace math...
내 질문은 ... 바로 설정 같은 코드했습니다이 활성화 및 디버깅에 대한 추적을 불가능하게하는 가장 좋은 방법입니다? 이러한 종류의 줄이 코드 전체에 흩어져 있기 때문에 if
또는 그 주변에 무엇이든지 정리해서 정리할 필요가 없기를 바랬습니다.
컴파일 타임에 빌드 할 때 false
상수가 제공되므로 컴파일러에서이 라인을 어셈블리 밖으로 최적화 할 예정입니까?
통찰력을 가져 주셔서 감사합니다.
'[조건부 ("TRACE = 1")]'과 같은 명확한 조건을 사용할 수 있습니까? – jocull
내 실수는 실제로 ... 나는 아직 컴파일러 기호에 숙제를하지 않았다 - 그들은 이런 식으로 작동하지 않습니다. – jocull
@jocull 네, 그냥 ConditionalAttribute 플래그를 사용할 수 있습니다. 플래그는 또한 대소 문자를 구별합니다 *, 사람들을 가끔씩 이동시킵니다 ... –