는 최근 다음 하드웨어가 모두 테스트에 사용 된 실버 라이트 5비동기/기다리고 있습니다 성능은 5
에 비동기/AWAIT (asyncctp) 기능에 관련하여 몇 가지 테스트를 수행 한 :
- 인텔 SNB의 2.3g
- 8g DDR
- 윈도우 7-64 비트
- 실버 5
- SQL 서버 2008 - R2는
테스트 논리는 다음과 같다 :
없이 비동기/await를 :와
public void LoadMasterItem(string strUNIT_ID) { **DateTime dt = DateTime.Now;** ctx.OBS_UNITs.Clear(); this.IsMasterItemBusy = true; ctx.Load(ctx.GetOBS_UNITQuery().Where(p => p.UNIT_ID == strUNIT_ID)).Completed += (sender, e) => { this.MasterItem = ctx.OBS_UNITs.FirstOrDefault(); this.IsMasterItemBusy = false; LoadDataArgs args = ExceptionManager.CheckDataContextResult(sender, args); **var ts = DateTime.Now.Subtract(dt).Ticks;** **string str = ts.ToString();** }; }
비동기/await를 :
public **async** Task<LoadDataArgs> LoadMasterItem(string UNIT_ID) { **DateTime dt = DateTime.Now;** ctx.OBS_UNITs.Clear(); var oper = await ctx.Load(ctx.GetOBS_UNITQuery().Where(p => p.UNIT_ID == UNIT_ID)).AsTask(); LoadDataArgs args = ExceptionManager.CheckDataContextResult(oper); if (args.LoadState) { this.MasterItem = oper.Entities.FirstOrDefault(); } **var ts = DateTime.Now.Subtract(dt).Ticks;** **string str = ts.ToString();** return args; }
진드기 실험 1 : 실험 2 5,304,010
진드기 : 30001
I는 상당한 정도 내 Silverlight 응용 프로그램을 개선 할 비동기/await를 사용하는 이유와 방법 궁금했다. 내 테스트가 '불공정'이라면 어떻게 향상시킬 수 있는지에 대한 의견을 나에게주세요.
디버깅 모드를 사용하지 않는 UI에 "str"값 바인딩을 만들었습니다. 이들은 IIS에서 호스팅되고 IE9에서 실행되었습니다. 1
진드기 : 2 5,504,010
진드기를 다음과 같이
resuls은
5,680,325가 응답을 주셔서 감사합니다, 그것은 내가 실제 성능에 대한 실수를 한 것 같다.
다른 변경 사항이 적용되지 않았습니까? – Jodrell
두 샘플 모두 동일한 테이블을 쿼리하는 데 사용 된 동일한 리아 서비스를 호출했습니다. 또한 테스트를 개별적으로 실행하고 다른 응용 프로그램을 닫았습니다. 그리고 나는 대학의 컴퓨터를 사용해 거의 동일한 결과를 얻었습니다. – justin
그들은 둘 다 동일한 실제 결과를 얻었습니까? 실제로 당신이'str '을 가지고 * 아무것도하지 않는다는 것을 주목하라 - 어떻게 그 효과를 관찰 했는가? 디버거에서 이것을 실행하면 쉽게 큰 효과를 낼 수 있습니다. 디버거를 * 외부에서 실행하여 효과를 로깅합니다. –