내가 실제로 게시하는 유일한 이유는 내 코드 성능이이 코드 블록의 영향을 받고 있기 때문에 다른 곳에서 foreach 루프를 사용하기 때문입니다.루프 성능 내 루프
다른 사람이 성능에 도움이 될 수있는 다른 제안이나 코드의 다른 결함을 지적했는지 궁금합니다. 당신은 그냥 내림차순 사전에서 (다른 위치에) 상위 5 개 점수를 표시하고 다른 사전에서 플레이어의 목록에 보내는 것보다시피
public override void DisplayScore()
{
byte MessageLocation = 0;
foreach (var kvp in PlayerScores.OrderByDescending((s => s.Value)))
{
if (MessageLocation == 5)
break;
if (MessageLocation == PlayerScores.Count)
break;
foreach (var player in PlayerList.Values)
{
SendMessage(MessageLocation, "My text");
}
Score++;
}
}
.
전송 메시지의 내용은 무엇인가? 이게 이메일인가요? – Sherlock
'MessageLocation'은 무엇이고 그 값을 어디에서 갱신하고 있습니까? –
코드가 좋지는 않지만 성능 문제는 발생하지 않습니다. 'foreach','break' 같은 간단한 구조는 수백만 개의 레코드가있을 때까지 성능 문제를 일으키지 않습니다. 프로파일 링을 시도하거나 적어도 디버깅을 시도하십시오. 대부분의 경우, 문제는'SendMessage'의 어딘가에 있습니다. –