Mercurial > emacs
annotate lib-src/profile.c @ 86470:c91f81134a74
(calc-set-language, calc-edit-finish)
(calc-edit-cancel, calc-do-quick-calc, calc-do-calc-eval)
(calc-do-keypad, calcFunc-unixtime, math-parse-date)
(math-lessp, calc-embedded-finish-command)
(calc-embedded-select-buffer, calc-embedded-mode-line-change)
(calc-push-list-in-macro, calc-replace-selections)
(calc-record-list, calc-normalize-fancy, calc-do-handle-whys)
(calc-top-selected, calc-sel-error, calc-pop-stack-in-macro)
(calc-embedded-stack-change, calc-refresh-evaltos)
(calc-do-refresh, calc-binary-op-fancy, calc-unary-op-fancy)
(calc-delete-selection, calc-alg-digit-entry, calc-alg-entry)
(calc-dots, calc-temp-minibuffer-message, math-read-radix-digit)
(calc-digit-dots, math-normalize-fancy, math-normalize-nonstandard)
(math-recompile-eval-rules, math-apply-rewrites, calc-record-why)
(math-dimension-error, calc-incomplete-error, math-float-fancy)
(math-neg-fancy, math-zerop, calc-add-fractions)
(math-add-objects-fancy, math-add-symb-fancy, math-mul-zero)
(calc-mul-fractions, math-mul-objects-fancy, math-mul-symb-fancy)
(math-reject-arg, math-div-by-zero, math-div-zero, math-make-frac)
(calc-div-fractions, math-div-objects-fancy, math-div-symb-fancy)
(math-compose-expr, math-comp-width, math-composition-to-string)
(math-stack-value-offset-fancy, math-format-flat-expr-fancy)
(math-adjust-fraction, math-format-binary, math-format-radix)
(math-group-float, math-mod, math-format-number-fancy)
(math-format-bignum-fancy, math-read-number-fancy)
(calc-do-grab-region, calc-do-grab-rectangle, calc-do-embedded)
(calc-do-embedded-activate, math-do-defmath)
(calc-load-everything): Declare as functions.
author | Jay Belanger <jay.p.belanger@gmail.com> |
---|---|
date | Tue, 27 Nov 2007 04:02:56 +0000 |
parents | 1f2482de3237 |
children | 5714ff101fd9 f55f9811f5d7 |
rev | line source |
---|---|
5810 | 1 /* profile.c --- generate periodic events for profiling of Emacs Lisp code. |
75250
6d19c76d81c5
Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents:
68647
diff
changeset
|
2 Copyright (C) 1992, 1994, 1999, 2001, 2002, 2003, 2004, |
6d19c76d81c5
Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents:
68647
diff
changeset
|
3 2005, 2006, 2007 Free Software Foundation, Inc. |
5810 | 4 |
5 Author: Boaz Ben-Zvi <boaz@lcs.mit.edu> | |
6 | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
7 This file is part of GNU Emacs. |
5810 | 8 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
9 GNU Emacs is free software; you can redistribute it and/or modify |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
10 it under the terms of the GNU General Public License as published by |
78257
1f2482de3237
Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents:
75250
diff
changeset
|
11 the Free Software Foundation; either version 3, or (at your option) |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
12 any later version. |
5810 | 13 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
14 GNU Emacs is distributed in the hope that it will be useful, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
15 but WITHOUT ANY WARRANTY; without even the implied warranty of |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
17 GNU General Public License for more details. |
5810 | 18 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
19 You should have received a copy of the GNU General Public License |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12723
diff
changeset
|
20 along with GNU Emacs; see the file COPYING. If not, write to |
64083 | 21 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
22 Boston, MA 02110-1301, USA. */ | |
5810 | 23 |
24 | |
25 /** | |
26 ** To be run as an emacs process. Input string that starts with: | |
27 ** 'z' -- resets the watch (to zero). | |
28 ** 'p' -- return time (on stdout) as string with format <sec>.<micro-sec> | |
29 ** 'q' -- exit. | |
30 ** | |
31 ** abstraction : a stopwatch | |
32 ** operations: reset_watch, get_time | |
33 */ | |
39661
cbfae3e04e1c
Include config.h, not ../src/config.h and systime.h, not ../src/systime.h.
Pavel Janík <Pavel@Janik.cz>
parents:
26083
diff
changeset
|
34 #include <config.h> |
5810 | 35 #include <stdio.h> |
39661
cbfae3e04e1c
Include config.h, not ../src/config.h and systime.h, not ../src/systime.h.
Pavel Janík <Pavel@Janik.cz>
parents:
26083
diff
changeset
|
36 #include <systime.h> |
5810 | 37 |
9887
be7b66e2cb98
(TV1, TV2): Use EMACS_TIME as type.
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
38 static EMACS_TIME TV1, TV2; |
5810 | 39 static int watch_not_started = 1; /* flag */ |
40 static char time_string[30]; | |
41 | |
42 /* Reset the stopwatch to zero. */ | |
43 | |
9491
dd3b83e4ceb0
Eliminate some -Wall warnings.
David J. MacKenzie <djm@gnu.org>
parents:
8336
diff
changeset
|
44 void |
5810 | 45 reset_watch () |
46 { | |
8336
52590f967c1e
(reset_watch, get_time): Use EMACS_GET_TIME.
Richard M. Stallman <rms@gnu.org>
parents:
6876
diff
changeset
|
47 EMACS_GET_TIME (TV1); |
5810 | 48 watch_not_started = 0; |
49 } | |
50 | |
51 /* This call returns the time since the last reset_watch call. The time | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
42439
diff
changeset
|
52 is returned as a string with the format <seconds>.<micro-seconds> |
6042
5bffd741340e
(main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents:
6026
diff
changeset
|
53 If reset_watch was not called yet, exit. */ |
5810 | 54 |
55 char * | |
56 get_time () | |
57 { | |
58 if (watch_not_started) | |
55442
a47704955f8d
Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
59 exit (EXIT_FAILURE); /* call reset_watch first ! */ |
8336
52590f967c1e
(reset_watch, get_time): Use EMACS_GET_TIME.
Richard M. Stallman <rms@gnu.org>
parents:
6876
diff
changeset
|
60 EMACS_GET_TIME (TV2); |
9887
be7b66e2cb98
(TV1, TV2): Use EMACS_TIME as type.
Richard M. Stallman <rms@gnu.org>
parents:
9491
diff
changeset
|
61 EMACS_SUB_TIME (TV2, TV2, TV1); |
19337
bd0dd246f9cd
(get_time): Cast arg to fprintf.
Richard M. Stallman <rms@gnu.org>
parents:
15683
diff
changeset
|
62 sprintf (time_string, "%lu.%06lu", (unsigned long)EMACS_SECS (TV2), (unsigned long)EMACS_USECS (TV2)); |
5810 | 63 return time_string; |
64 } | |
65 | |
12723
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
66 #if ! defined (HAVE_GETTIMEOFDAY) && defined (HAVE_TIMEVAL) |
42439
d8a417105504
Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents:
39661
diff
changeset
|
67 |
12723
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
68 /* ARGSUSED */ |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
69 gettimeofday (tp, tzp) |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
70 struct timeval *tp; |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
71 struct timezone *tzp; |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
72 { |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
73 extern long time (); |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
74 |
42439
d8a417105504
Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents:
39661
diff
changeset
|
75 tp->tv_sec = time ((long *)0); |
12723
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
76 tp->tv_usec = 0; |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
77 if (tzp != 0) |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
78 tzp->tz_minuteswest = -1; |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
79 } |
42439
d8a417105504
Remove unnecessary whitespaces.
Pavel Janík <Pavel@Janik.cz>
parents:
39661
diff
changeset
|
80 |
12723
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
81 #endif |
48786c683506
(gettimeofday): New function, defined if necessary.
Richard M. Stallman <rms@gnu.org>
parents:
10087
diff
changeset
|
82 |
15683 | 83 int |
5810 | 84 main () |
85 { | |
6042
5bffd741340e
(main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents:
6026
diff
changeset
|
86 int c; |
5bffd741340e
(main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents:
6026
diff
changeset
|
87 while ((c = getchar ()) != EOF) |
5810 | 88 { |
6042
5bffd741340e
(main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents:
6026
diff
changeset
|
89 switch (c) |
5810 | 90 { |
91 case 'z': | |
92 reset_watch (); | |
93 break; | |
94 case 'p': | |
95 puts (get_time ()); | |
96 break; | |
97 case 'q': | |
55442
a47704955f8d
Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
98 exit (EXIT_SUCCESS); |
5810 | 99 } |
6042
5bffd741340e
(main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents:
6026
diff
changeset
|
100 /* Anything remaining on the line is ignored. */ |
5bffd741340e
(main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents:
6026
diff
changeset
|
101 while (c != '\n' && c != EOF) |
5bffd741340e
(main, get_time): Don't crash on invalid input.
Karl Heuer <kwzh@gnu.org>
parents:
6026
diff
changeset
|
102 c = getchar (); |
5810 | 103 } |
55442
a47704955f8d
Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
104 exit (EXIT_FAILURE); |
5810 | 105 } |
52401 | 106 |
107 /* arch-tag: 8db68f7e-2322-4944-a315-dba349bdbf39 | |
108 (do not change this comment) */ | |
55442
a47704955f8d
Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
109 |
a47704955f8d
Throughout, replace 0 destined for `exit' arg with `EXIT_SUCCESS'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
52401
diff
changeset
|
110 /* profile.c ends here */ |