Mercurial > hg > xemacs-beta
comparison src/profile.c @ 1346:01c57eb70ae9
[xemacs-hg @ 2003-03-09 02:27:27 by ben]
To: xemacs-patches@xemacs.org
i.c: Sleep between calls to check for I/O, since these calls are non-blocking.
behavior.el: Allow other keywords for forward compatibility.
cl-macs.el: Rewrite to eliminate byte-compiler warning when `return' is used
without `finally'.
cmdloop.el: Avoid truncated error messages for `end-of-file' and the like.
cmdloop.el: Avoid char-int error after syncing.
files.el: Eliminate byte-compile warnings.
printer.el: Fix line-width calculations.
#### This used to work. Someone's changes (perhaps by
Michael Sperber?) seem to have messed something up.
simple.el: Use new clear-left-side functions to avoid messages ending up on
the same line as other output.
xemacs.mak: Add override for info/ as well when separate source/build dirs.
xemacs.mak: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
Makefile.in.in: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
alloc.c: Don't arbitrarily clear Vconfigure_info_directory since it
messes up separate build/source dirs.
console.c, console.h, device-msw.c, device.c: Add accidentally omitted msprinter console and data descriptions.
print.c, console-msw.c: Add clear-left-side functionality to help keep stdio/stderr
output from separate sources on separate lines. Generalize
the different kinds of debugging output. Add dpa().
profile.c: Add better docs on Unix/Windows differences.
regex.c: Fix problems with rel-alloc compilation caused by previous patch.
emacs.c: Seg fault rather than abort on Cygwin, since gdb doesn't trap
aborts properly.
console-gtk-impl.h, console-gtk.h, console-msw.h, console-x-impl.h, console-x.h, dialog-gtk.c, dialog-x.c, event-msw.c, frame-gtk.c, frame-x.c, frameslots.h, glyphs-gtk.c, glyphs-x.c, gui-gtk.c, gui-x.c, inline.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, scrollbar-gtk.c, scrollbar-x.c, ui-gtk.c: Delete popup-data object. Delete menubar_data field from frames,
since its usage is frame-specific. Delete menubar-msw.h,
gui-x.h, gui-gtk.h. Clean up handling of lwlib callback data
GCPRO'ing and add missing GCPRO recomputation in widget code.
author | ben |
---|---|
date | Sun, 09 Mar 2003 02:27:46 +0000 |
parents | 70921960b980 |
children | ac1be85b4a5f |
comparison
equal
deleted
inserted
replaced
1345:3b27da507d56 | 1346:01c57eb70ae9 |
---|---|
49 running. | 49 running. |
50 | 50 |
51 The basic idea is simple. We set a profiling timer using setitimer | 51 The basic idea is simple. We set a profiling timer using setitimer |
52 (ITIMER_PROF), which generates a SIGPROF every so often. (This runs not | 52 (ITIMER_PROF), which generates a SIGPROF every so often. (This runs not |
53 in real time but rather when the process is executing or the system is | 53 in real time but rather when the process is executing or the system is |
54 running on behalf of the process.) When the signal goes off, we see what | 54 running on behalf of the process -- at least, that is the case under |
55 we're in, and add 1 to the count associated with that function. | 55 Unix. Under MS Windows and Cygwin, there is no setitimer(), so we |
56 simulate it using multimedia timers, which run in real time. To make | |
57 the results a bit more realistic, we ignore ticks that go off while | |
58 blocking on an event wait. Note that Cygwin does provide a simulation | |
59 of setitimer(), but it's in real time anyway, since Windows doesn't | |
60 provide a way to have process-time timers, and furthermore, it's broken, | |
61 so we don't use it.) When the signal goes off, we see what we're in, and | |
62 add 1 to the count associated with that function. | |
56 | 63 |
57 It would be nice to use the Lisp allocation mechanism etc. to keep track | 64 It would be nice to use the Lisp allocation mechanism etc. to keep track |
58 of the profiling information (i.e. to use Lisp hash tables), but we | 65 of the profiling information (i.e. to use Lisp hash tables), but we |
59 can't because that's not safe -- updating the timing information happens | 66 can't because that's not safe -- updating the timing information happens |
60 inside of a signal handler, so we can't rely on not being in the middle | 67 inside of a signal handler, so we can't rely on not being in the middle |
704 vars_of_profile (void) | 711 vars_of_profile (void) |
705 { | 712 { |
706 DEFVAR_INT ("default-profiling-interval", &default_profiling_interval /* | 713 DEFVAR_INT ("default-profiling-interval", &default_profiling_interval /* |
707 Default CPU time in microseconds between profiling sampling. | 714 Default CPU time in microseconds between profiling sampling. |
708 Used when the argument to `start-profiling' is nil or omitted. | 715 Used when the argument to `start-profiling' is nil or omitted. |
709 Note that the time in question is CPU time (when the program is executing | 716 Under Unix, the time in question is CPU time (when the program is executing |
710 or the kernel is executing on behalf of the program) and not real time, and | 717 or the kernel is executing on behalf of the program) and not real time. |
711 there is usually a machine-dependent limit on how small this value can be. | 718 Under MS Windows and Cygwin, the time is real time, but time spent blocking |
719 while waiting for an event is ignored, to get more accurate results. | |
720 Note that there is usually a machine-dependent limit on how small this | |
721 value can be. | |
712 */ ); | 722 */ ); |
713 default_profiling_interval = 1000; | 723 default_profiling_interval = 1000; |
714 | 724 |
715 staticpro (&Vcall_count_profile_table); | 725 staticpro (&Vcall_count_profile_table); |
716 Vcall_count_profile_table = Qnil; | 726 Vcall_count_profile_table = Qnil; |