일부 사용자 지정 직렬화 작업을하고 일부 공간을 절약하기 위해 가능하면 현명한 값으로 int로 소수 자릿수를 직렬화하려고합니다. 나는 많은 양의 데이터를 다루고 있기 때문에 성능 문제가있다. 현재 사용하는 방법은 다음과 같습니다.십진수를 int32로 저장할 수 있는지 확인하십시오.
if ((value > Int32.MinValue) && (value < Int32.MaxValue) && ((valueAsInt = Decimal.ToInt32(value)) == value))
{
return true;
}
개선 될 수 있습니까?
성능에 대해서는 계속 이야기하지만 벤치 마크 나 특정 요구 사항은 표시되지 않습니다. 이 방법이 성능이 좋지 않다는 것을 어떻게 알 수 있습니까? 얼마나 개선 될 것으로 예상됩니까? 당신이 그것을 성취했는지 어떻게 알 수 있습니까? – Aaronaught
@aaronaught이 방법이 성능이 좋지 않다고 말하는 것은 아니지만 이것이 더 효율적 일 수는 없음을 의미하지는 않습니다. 내가 가지고있는 데이터의 양에 대해, 일어나는 일을 직렬화하고 분석 할 때,이 코드 조각은 4 %의 CPU 시간을 소비했다. 더 적은 것은 개선이다. 즉, 나는 숫자 표현이나 일리노이 실행의 내적 작업에 대한 전문가가 아니기 때문에이 분야에 대한 지식이 부족하기 때문에 개선의 여지가있을 수 있습니다. – anchandra
"성능"도 실행하는 데 걸리는 시간을 측정 할 수 있습니다. CPU가 4 % 밖에 안되면 멀티 스레드로 CPU를 더 많이 사용하고 더 빨리 끝낼 수 있습니다. 또는이 코드가 총 CPU 사용량의 4 %를 차지했거나 (아마 100 %에 가깝습니다) 오해 했습니까? –