home *** CD-ROM | disk | FTP | other *** search
- To: vim-dev@vim.org
- Subject: Patch 7.2.269
- Fcc: outbox
- From: Bram Moolenaar <Bram@moolenaar.net>
- 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 ///
-