39502Patch for gui_w32.c
- Apr 5, 2005Hi All!
I've been profiling Vim Win32 redrawer recently and noticed a bug in gui_w32.c source file, gui_mch_draw_string function. Here is the patch:
--- D:\projects\3rd-parties\vim63.clean\src\gui_w32.c 2005-04-05 22:45:02.546875000 +0400
+++ D:\projects\3rd-parties\vim63\src\gui_w32.c 2005-04-05 22:23:13.625000000 +0400
@@ -1774,7 +1774,7 @@
static WCHAR *unicodebuf = NULL;
static int *unicodepdy = NULL;
- int unibuflen = 0;
+ static int unibuflen = 0;
int n = 0;
HPEN hpen, old_pen;
I'm not sure that I have the up-to-date sources, so the patch maybe not smooth to apply, but the idea of the fix should be clear. The unibuflen variable is used together with unicodebuf for caching the memory allocation requests. But since the author made it local instead of static we end up with allocating the memory constantly.
Without the fix gui_mch_draw_string function spends about 7% of its time on alloc, and 16.3% - on vim_free. With the fix - it's close to zero.
- Next post in topic >>