diff --git a/7.2.269 b/7.2.269 new file mode 100644 index 0000000..ec15f45 --- /dev/null +++ b/7.2.269 @@ -0,0 +1,261 @@ +To: vim-dev@vim.org +Subject: Patch 7.2.269 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.2.269 +Problem: Many people struggle to find out why Vim startup is slow. +Solution: Add the --startuptime command line flag. +Files: runtime/doc/starting.txt, src/globals.h, src/feature.h, + src/main.c, src/macros.h + + +*** ../vim-7.2.268/runtime/doc/starting.txt 2008-11-09 13:43:25.000000000 +0100 +--- runtime/doc/starting.txt 2009-10-25 11:57:51.000000000 +0100 +*************** +*** 144,149 **** +--- 144,156 ---- + -u NORC no yes + --noplugin yes no + ++ --startuptime={fname} *--startuptime* ++ During startup write timing messages to the file {fname}. ++ This can be used to find out where time is spent while loading ++ your .vimrc and plugins. ++ When {fname} already exists new messages are appended. ++ {only when compiled with this feature} ++ + *--literal* + --literal Take file names literally, don't expand wildcards. Not needed + for Unix, because Vim always takes file names literally (the +*************** +*** 471,476 **** +--- 487,493 ---- + window title and copy/paste using the X clipboard. This + avoids a long startup time when running Vim in a terminal + emulator and the connection to the X server is slow. ++ See |--startuptime| to find out if affects you. + Only makes a difference on Unix or VMS, when compiled with the + |+X11| feature. Otherwise it's ignored. + To disable the connection only for specific terminals, see the +*** ../vim-7.2.268/src/globals.h 2009-07-29 12:09:49.000000000 +0200 +--- src/globals.h 2009-10-10 15:14:31.000000000 +0200 +*************** +*** 1567,1572 **** +--- 1567,1576 ---- + /* For undo we need to know the lowest time possible. */ + EXTERN time_t starttime; + ++ #ifdef STARTUPTIME ++ EXTERN FILE *time_fd INIT(= NULL); /* where to write startup timing */ ++ #endif ++ + /* + * Some compilers warn for not using a return value, but in some situations we + * can't do anything useful with the value. Assign to this variable to avoid +*** ../vim-7.2.268/src/feature.h 2008-11-09 13:43:25.000000000 +0100 +--- src/feature.h 2009-10-10 16:16:19.000000000 +0200 +*************** +*** 844,853 **** + /* #define DEBUG */ + + /* +! * STARTUPTIME Time the startup process. Writes a "vimstartup" file +! * with timestamps. + */ +! /* #define STARTUPTIME "vimstartup" */ + + /* + * MEM_PROFILE Debugging of memory allocation and freeing. +--- 844,857 ---- + /* #define DEBUG */ + + /* +! * STARTUPTIME Time the startup process. Writes a file with +! * timestamps. + */ +! #if defined(FEAT_NORMAL) \ +! && ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)) \ +! || defined(WIN3264)) +! # define STARTUPTIME 1 +! #endif + + /* + * MEM_PROFILE Debugging of memory allocation and freeing. +*** ../vim-7.2.268/src/main.c 2009-05-26 22:58:43.000000000 +0200 +--- src/main.c 2009-10-10 16:18:32.000000000 +0200 +*************** +*** 130,139 **** + #endif + + +- #ifdef STARTUPTIME +- static FILE *time_fd = NULL; +- #endif +- + /* + * Different types of error messages. + */ +--- 130,135 ---- +*************** +*** 173,178 **** +--- 169,177 ---- + char_u *fname = NULL; /* file name from command line */ + mparm_T params; /* various parameters passed between + * main() and other functions. */ ++ #ifdef STARTUPTIME ++ int i; ++ #endif + + /* + * Do any system-specific initialisations. These can NOT use IObuff or +*************** +*** 203,210 **** + #endif + + #ifdef STARTUPTIME +! time_fd = mch_fopen(STARTUPTIME, "a"); +! TIME_MSG("--- VIM STARTING ---"); + #endif + starttime = time(NULL); + +--- 202,216 ---- + #endif + + #ifdef STARTUPTIME +! for (i = 1; i < argc; ++i) +! { +! if (STRNICMP(argv[i], "--startuptime=", 14) == 0) +! { +! time_fd = mch_fopen(argv[i] + 14, "a"); +! TIME_MSG("--- VIM STARTING ---"); +! break; +! } +! } + #endif + starttime = time(NULL); + +*************** +*** 1150,1155 **** +--- 1156,1173 ---- + cursor_on(); + + do_redraw = FALSE; ++ ++ #ifdef STARTUPTIME ++ /* Now that we have drawn the first screen all the startup stuff ++ * has been done, close any file for startup messages. */ ++ if (time_fd != NULL) ++ { ++ TIME_MSG("first screen update"); ++ TIME_MSG("--- VIM STARTED ---"); ++ fclose(time_fd); ++ time_fd = NULL; ++ } ++ #endif + } + #ifdef FEAT_GUI + if (need_mouse_correct) +*************** +*** 1743,1748 **** +--- 1761,1770 ---- + /* already processed, skip */ + } + #endif ++ else if (STRNICMP(argv[0] + argv_idx, "startuptime", 11) == 0) ++ { ++ /* already processed, skip */ ++ } + else + { + if (argv[0][argv_idx]) +*************** +*** 3211,3216 **** +--- 3233,3252 ---- + + static struct timeval prev_timeval; + ++ # ifdef WIN3264 ++ /* ++ * Windows doesn't have gettimeofday(), although it does have struct timeval. ++ */ ++ static int ++ gettimeofday(struct timeval *tv, char *dummy) ++ { ++ long t = clock(); ++ tv->tv_sec = t / CLOCKS_PER_SEC; ++ tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC; ++ return 0; ++ } ++ # endif ++ + /* + * Save the previous time before doing something that could nest. + * set "*tv_rel" to the time elapsed so far. +*************** +*** 3299,3318 **** + } + } + +- # ifdef WIN3264 +- /* +- * Windows doesn't have gettimeofday(), although it does have struct timeval. +- */ +- int +- gettimeofday(struct timeval *tv, char *dummy) +- { +- long t = clock(); +- tv->tv_sec = t / CLOCKS_PER_SEC; +- tv->tv_usec = (t - tv->tv_sec * CLOCKS_PER_SEC) * 1000000 / CLOCKS_PER_SEC; +- return 0; +- } +- # endif +- + #endif + + #if defined(FEAT_CLIENTSERVER) || defined(PROTO) +--- 3335,3340 ---- +*** ../vim-7.2.268/src/macros.h 2009-05-17 13:30:58.000000000 +0200 +--- src/macros.h 2009-10-10 15:19:07.000000000 +0200 +*************** +*** 243,249 **** + #endif + + #ifdef STARTUPTIME +! # define TIME_MSG(s) time_msg(s, NULL) + #else + # define TIME_MSG(s) + #endif +--- 243,249 ---- + #endif + + #ifdef STARTUPTIME +! # define TIME_MSG(s) { if (time_fd != NULL) time_msg(s, NULL); } + #else + # define TIME_MSG(s) + #endif +*** ../vim-7.2.268/src/version.c 2009-11-03 11:43:05.000000000 +0100 +--- src/version.c 2009-11-03 12:06:31.000000000 +0100 +*************** +*** 678,679 **** +--- 678,681 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 269, + /**/ + +-- +BEDEVERE: Look! It's the old man from scene 24 - what's he Doing here? +ARTHUR: He is the keeper of the Bridge. He asks each traveler five + questions ... +GALAHAD: Three questions. + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///