On Thu, 2005-05-12 at 11:04 +0200, Hubert FONGARNAND wrote: > I apologize, i've found my problem... > This slowdown is due to System.Drawing > > Let me explain... > Mono renders a page with more than 100 menu, for each menu, the largest item > size is calculated by this function : > > SizeF size; > float emSize = Convert.ToSingle(fontInfo.Size.Unit.Value); > emSize = (emSize==0 ?8 :emSize); > Font stringFont = new Font(fontInfo.Name, emSize); > Graphics g=new Bitmap(1,1); > size = g.MeasureString(text, stringFont); > g.Dispose(); > return size; > > After doing some tests, i've seen that the slowest line is : > Font stringFont = new Font(fontInfo.Name, emSize); > So the creation of this Font object (the font is Arial) is extremely slow > comparing to MS.NET... > If I remove this line, the page loads as fast as MS.NET (a little bit > faster...) > > Is there a way to optimize System.Drawing for this problem; > or is there a better way to measure a text string length (with variable font > size) without using this very slow function...
I'm not sure how much we can speed that up. I can take a look at how Cairo does the stuff. However, if I understand what you are doing correctly, you are trying to measure a string on the server and see how large it will be on the client. I am not sure how well that will work. On the client side, people might have different fonts installed, or might even use a user css sheet. Nonetheless, we should still try to be faster here. -- Ben _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list