Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=82365 --- shadow/82365 2007-08-08 01:57:11.000000000 -0400 +++ shadow/82365.tmp.28687 2007-08-08 01:57:11.000000000 -0400 @@ -0,0 +1,65 @@ +Bug#: 82365 +Product: Mono: Class Libraries +Version: 1.0 +OS: +OS Details: +Status: NEW +Resolution: +Severity: +Priority: Major +Component: System +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: WebClient Performance loss from 1.x to 2.x + +The WebClient has had a performance loss in going from 1.x to 2.x, the +following program on a fast network will yield slower results if compiled +with gmcs: + +using System; +using System.IO; +using System.Net; + +class Test { + static void Main (string[] args) { + string url = args[0]; + WebClient wc = new WebClient(); + DateTime start = DateTime.Now; + wc.DownloadFile(url, "downloaded"); + TimeSpan elapsed = DateTime.Now - start; + FileInfo info = new FileInfo("downloaded"); + long length = info.Length; + Console.WriteLine("{0} kB/s", (length / 1024.0) / +elapsed.TotalSeconds); + } +} + +I instrumented the code in DownloadFile to ensure that the time was +actually being spent in the body of the download routine instead of the +various configuration (that are quite different between 1.x and 2.x and +that pollute the --trace output). + +One interesting observation is that for a large download, I noticed this by +sorting the output of trace: + +for mcs, the top counts for method calls: + 222 LEAVE: (wrapper managed-to-native) +System.Threading.Monitor:Monitor_try_enter (object,int)TRUE:1 + 223 LEAVE: (wrapper managed-to-native) +System.Threading.Monitor:Monitor_exit (object) + 256 LEAVE: System.Threading.Monitor:Exit (object) + 293 LEAVE: System.Threading.Monitor:Enter (object) + +for gmcs: + 621 LEAVE: (wrapper managed-to-native) +System.Threading.Monitor:Monitor_try_enter (object,int)TRUE:1 + 640 LEAVE: (wrapper managed-to-native) +System.Threading.Monitor:Monitor_exit (object) + 769 LEAVE: System.Threading.Monitor:Enter (object) + 776 LEAVE: System.Threading.Monitor:Exit (object) + +We might be too trigger happy with the locks in 2.x _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
