<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Alan+Fehr</id>
		<title>EiffelStudio: an EiffelSoftware project - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Alan+Fehr"/>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/Special:Contributions/Alan_Fehr"/>
		<updated>2026-04-15T17:47:55Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3635</id>
		<title>Profiling Actions</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3635"/>
				<updated>2006-06-20T05:38:33Z</updated>
		
		<summary type="html">&lt;p&gt;Alan Fehr: /* Drawbacks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Profiler]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
= Overview =&lt;br /&gt;
The goal of this project is to add the concept of actions to the Eiffel Studio profiler to make the timing of GUI applications easier.&lt;br /&gt;
&lt;br /&gt;
= Main Functionality =&lt;br /&gt;
* In the code the user can add&lt;br /&gt;
&lt;br /&gt;
 action_timer.start_action (&amp;quot;myAction&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 -- action to time&lt;br /&gt;
 &lt;br /&gt;
 action_timer.stop_action&lt;br /&gt;
&lt;br /&gt;
: around interesting parts of code.&lt;br /&gt;
&lt;br /&gt;
* The tool checks if the directory already contains a file named myAction.br (base run). If it does a file named myAction.cr (comparison run) is created, otherwise the base run file is created.&lt;br /&gt;
* Then the user can view the timed actions (requires base and comparison runs exist) to see if his code modifications slowed down or speeded up the code&lt;br /&gt;
&lt;br /&gt;
= Implementation =&lt;br /&gt;
* I modified the files eif_option.h and option.c in the run-time. When an action ends I save the profiling information into a file with the name of the action. After that the profiling stack is freed and reinitialized:&lt;br /&gt;
 ht_free(class_table);&lt;br /&gt;
 prof_stack_free();&lt;br /&gt;
 initprf();&lt;br /&gt;
* For this to work &amp;lt;tt&amp;gt;stop_profile&amp;lt;/tt&amp;gt; has been modified to check a flag and not report a profile stack corruption if the flag is true.&lt;br /&gt;
** Using a more fine-grained resetting might have been nicer but all my attempts in this direction resulted in an unlocalized division by zero error somewhere in the C code.&lt;br /&gt;
&lt;br /&gt;
* When the Action Timer is invoked it checks the given directory for .br and .cr files and if both are present with the same name the action is added to the list.&lt;br /&gt;
** The files are parsed using a subclass of &amp;lt;tt&amp;gt;PROFILE_CONVERTER&amp;lt;/tt&amp;gt; which overrides a feature so the converted information isn't written to disk.&lt;br /&gt;
* A new class inheriting from &amp;lt;tt&amp;gt;PROFILE_INFORMATION&amp;lt;/tt&amp;gt; has been added to make total execution time always available.&lt;br /&gt;
* The actions are then displayed with a comparison of the execution times and with detailed profiling information.&lt;br /&gt;
= Drawbacks =&lt;br /&gt;
* It's not possible to have nested actions. This would require larger changes to the run-time.&lt;br /&gt;
* It's not possible to profile the whole application and specific actions at the same time.&lt;br /&gt;
** This would require keeping separate records for the actions.&lt;br /&gt;
** Such a change would also allow nested actions, however.&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
[[Image:action_timer_screenshot.jpg]]&lt;br /&gt;
= Responsible =&lt;br /&gt;
[[User:Alan Fehr|Alan Fehr]]&lt;/div&gt;</summary>
		<author><name>Alan Fehr</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3614</id>
		<title>Profiling Actions</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3614"/>
				<updated>2006-06-19T17:00:13Z</updated>
		
		<summary type="html">&lt;p&gt;Alan Fehr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Profiler]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
= Overview =&lt;br /&gt;
The goal of this project is to add the concept of actions to the Eiffel Studio profiler to make the timing of GUI applications easier.&lt;br /&gt;
&lt;br /&gt;
= Main Functionality =&lt;br /&gt;
* In the code the user can add&lt;br /&gt;
&lt;br /&gt;
 action_timer.start_action (&amp;quot;myAction&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 -- action to time&lt;br /&gt;
 &lt;br /&gt;
 action_timer.stop_action&lt;br /&gt;
&lt;br /&gt;
: around interesting parts of code.&lt;br /&gt;
&lt;br /&gt;
* The tool checks if the directory already contains a file named myAction.br (base run). If it does a file named myAction.cr (comparison run) is created, otherwise the base run file is created.&lt;br /&gt;
* Then the user can view the timed actions (requires base and comparison runs exist) to see if his code modifications slowed down or speeded up the code&lt;br /&gt;
&lt;br /&gt;
= Implementation =&lt;br /&gt;
* I modified the files eif_option.h and option.c in the run-time. When an action ends I save the profiling information into a file with the name of the action. After that the profiling stack is freed and reinitialized:&lt;br /&gt;
 ht_free(class_table);&lt;br /&gt;
 prof_stack_free();&lt;br /&gt;
 initprf();&lt;br /&gt;
* For this to work &amp;lt;tt&amp;gt;stop_profile&amp;lt;/tt&amp;gt; has been modified to check a flag and not report a profile stack corruption if the flag is true.&lt;br /&gt;
** Using a more fine-grained resetting might have been nicer but all my attempts in this direction resulted in an unlocalized division by zero error somewhere in the C code.&lt;br /&gt;
&lt;br /&gt;
* When the Action Timer is invoked it checks the given directory for .br and .cr files and if both are present with the same name the action is added to the list.&lt;br /&gt;
** The files are parsed using a subclass of &amp;lt;tt&amp;gt;PROFILE_CONVERTER&amp;lt;/tt&amp;gt; which overrides a feature so the converted information isn't written to disk.&lt;br /&gt;
* A new class inheriting from &amp;lt;tt&amp;gt;PROFILE_INFORMATION&amp;lt;/tt&amp;gt; has been added to make total execution time always available.&lt;br /&gt;
* The actions are then displayed with a comparison of the execution times and with detailed profiling information.&lt;br /&gt;
= Drawbacks =&lt;br /&gt;
* It's not possible to have nested actions. This would require larger changes to the run-time.&lt;br /&gt;
= Screenshots =&lt;br /&gt;
[[Image:action_timer_screenshot.jpg]]&lt;br /&gt;
= Responsible =&lt;br /&gt;
[[User:Alan Fehr|Alan Fehr]]&lt;/div&gt;</summary>
		<author><name>Alan Fehr</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3613</id>
		<title>Profiling Actions</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3613"/>
				<updated>2006-06-19T16:43:31Z</updated>
		
		<summary type="html">&lt;p&gt;Alan Fehr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Profiler]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
= Overview =&lt;br /&gt;
The goal of this project is to add the concept of actions to the Eiffel Studio profiler to make the timing of GUI applications easier.&lt;br /&gt;
&lt;br /&gt;
= Main Functionality =&lt;br /&gt;
* In the code the user can add&lt;br /&gt;
&lt;br /&gt;
 action_timer.start_action (&amp;quot;myAction&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 -- action to time&lt;br /&gt;
 &lt;br /&gt;
 action_timer.stop_action&lt;br /&gt;
&lt;br /&gt;
: around interesting parts of code.&lt;br /&gt;
&lt;br /&gt;
* The tool checks if the directory already contains a file named myAction.br (base run). If it does a file named myAction.cr (comparison run) is created, otherwise the base run file is created.&lt;br /&gt;
* Then the user can view the timed actions (requires base and comparison runs exist) to see if his code modifications slowed down or speeded up the code&lt;br /&gt;
&lt;br /&gt;
= Implementation =&lt;br /&gt;
* I modified the files eif_option.h and option.c in the run-time. When an action ends I save the profiling information into a file with the name of the action. After that the profiling stack is freed and reinitialized:&lt;br /&gt;
 ht_free(class_table);&lt;br /&gt;
 prof_stack_free();&lt;br /&gt;
 initprf();&lt;br /&gt;
* For this to work &amp;lt;tt&amp;gt;stop_profile&amp;lt;/tt&amp;gt; has been modified to check a flag and not report a profile stack corruption if the flag is true.&lt;br /&gt;
&lt;br /&gt;
* When the Action Timer is invoked it checks the given directory for .br and .cr files and if both are present with the same name the action is added to the list.&lt;br /&gt;
** The files are parsed using a subclass of &amp;lt;tt&amp;gt;PROFILE_CONVERTER&amp;lt;/tt&amp;gt; which overrides a feature so the converted information isn't written to disk.&lt;br /&gt;
* A new class inheriting from &amp;lt;tt&amp;gt;PROFILE_INFORMATION&amp;lt;/tt&amp;gt; has been added to make total execution time always available.&lt;br /&gt;
* The actions are then displayed with a comparison of the execution times and with detailed profiling information.&lt;br /&gt;
= Drawbacks =&lt;br /&gt;
* It's not possible to have nested actions. This would require larger changes to the run-time.&lt;br /&gt;
= Screenshots =&lt;br /&gt;
[[Image:action_timer_screenshot.jpg]]&lt;br /&gt;
= Responsible =&lt;br /&gt;
[[User:Alan Fehr|Alan Fehr]]&lt;/div&gt;</summary>
		<author><name>Alan Fehr</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3612</id>
		<title>Profiling Actions</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3612"/>
				<updated>2006-06-19T16:36:44Z</updated>
		
		<summary type="html">&lt;p&gt;Alan Fehr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Profiler]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
= Overview =&lt;br /&gt;
The goal of this project is to add the concept of actions to the Eiffel Studio profiler to make the timing of GUI applications easier.&lt;br /&gt;
&lt;br /&gt;
= Main Functionality =&lt;br /&gt;
* In the code the user can add&lt;br /&gt;
&lt;br /&gt;
 action_timer.start_action (&amp;quot;myAction&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 -- action to time&lt;br /&gt;
 &lt;br /&gt;
 action_timer.stop_action&lt;br /&gt;
&lt;br /&gt;
: around interesting parts of code.&lt;br /&gt;
&lt;br /&gt;
* The tool checks if the directory already contains a file named myAction.br (base run). If it does a file named myAction.cr (comparison run) is created, otherwise the base run file is created.&lt;br /&gt;
* Then the user can view the timed actions (requires base and comparison runs exist) to see if his code modifications slowed down or speeded up the code&lt;br /&gt;
&lt;br /&gt;
= Implementation =&lt;br /&gt;
* I modified the files eif_option.h and option.c in the run-time. When an action ends I save the profiling information into a file with the name of the action. After that the profiling stack is freed and reinitialized:&lt;br /&gt;
 ht_free(class_table);&lt;br /&gt;
 prof_stack_free();&lt;br /&gt;
 initprf();&lt;br /&gt;
* For this to work &amp;lt;tt&amp;gt;stop_profile&amp;lt;/tt&amp;gt; has been modified to check a flag and not report a profile stack corruption if the flag is true.&lt;br /&gt;
&lt;br /&gt;
* When the Action Timer is invoked it checks the given directory for .br and .cr files and if both are present with the same name the action is added to the list.&lt;br /&gt;
** The files are parsed using a subclass of &amp;lt;tt&amp;gt;PROFILE_CONVERTER&amp;lt;/tt&amp;gt; which overrides a feature so the converted information isn't written to disk.&lt;br /&gt;
* A new class inheriting from &amp;lt;tt&amp;gt;PROFILE_INFORMATION&amp;lt;/tt&amp;gt; has been added to make total execution time always available.&lt;br /&gt;
* The actions are then displayed with a comparison of the execution times and with detailed profiling information.&lt;br /&gt;
= Drawbacks =&lt;br /&gt;
* It's not possible to have nested actions. This would require larger changes to the run-time.&lt;br /&gt;
= Screenshots =&lt;br /&gt;
[[Image:action_timer_screenshot.jpg]]&lt;/div&gt;</summary>
		<author><name>Alan Fehr</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=File:Action_timer_screenshot.jpg&amp;diff=3611</id>
		<title>File:Action timer screenshot.jpg</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=File:Action_timer_screenshot.jpg&amp;diff=3611"/>
				<updated>2006-06-19T16:33:23Z</updated>
		
		<summary type="html">&lt;p&gt;Alan Fehr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alan Fehr</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3610</id>
		<title>Profiling Actions</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3610"/>
				<updated>2006-06-19T16:32:57Z</updated>
		
		<summary type="html">&lt;p&gt;Alan Fehr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Profiler]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
= Overview =&lt;br /&gt;
The goal of this project is to add the concept of actions to the Eiffel Studio profiler to make the timing of GUI applications easier.&lt;br /&gt;
&lt;br /&gt;
= Main Functionality =&lt;br /&gt;
* In the code the user can add&lt;br /&gt;
&lt;br /&gt;
 action_timer.start_action (&amp;quot;myAction&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 -- action to time&lt;br /&gt;
 &lt;br /&gt;
 action_timer.stop_action&lt;br /&gt;
&lt;br /&gt;
: around interesting parts of code.&lt;br /&gt;
&lt;br /&gt;
* The tool checks if the directory already contains a file named myAction.br (base run). If it does a file named myAction.cr (comparison run) is created, otherwise the base run file is created.&lt;br /&gt;
* Then the user can view the timed actions (requires base and comparison runs exist) to see if his code modifications slowed down or speeded up the code&lt;br /&gt;
&lt;br /&gt;
= Implementation =&lt;br /&gt;
* I modified the files eif_option.h and option.c in the run-time. When an action ends I save the profiling information into a file with the name of the action. After that the profiling stack is freed and reinitialized:&lt;br /&gt;
 ht_free(class_table);&lt;br /&gt;
 prof_stack_free();&lt;br /&gt;
 initprf();&lt;br /&gt;
* For this to work &amp;lt;tt&amp;gt;stop_profile&amp;lt;/tt&amp;gt; has been modified to check a flag and not report a profile stack corruption if the flag is true.&lt;br /&gt;
&lt;br /&gt;
* When the Action Timer is invoked it checks the given directory for .br and .cr files and if both are present with the same name the action is added to the list.&lt;br /&gt;
** The files are parsed using a subclass of &amp;lt;tt&amp;gt;PROFILE_CONVERTER&amp;lt;/tt&amp;gt; which overrides a feature so the converted information isn't written to disk.&lt;br /&gt;
* A new class inheriting from &amp;lt;tt&amp;gt;PROFILE_INFORMATION&amp;lt;/tt&amp;gt; has been added to make total execution time always available.&lt;br /&gt;
* The actions are then displayed with a comparison of the execution times and with detailed profiling information.&lt;br /&gt;
= Screenshots =&lt;br /&gt;
[[Image:action_timer_screenshot.jpg]]&lt;/div&gt;</summary>
		<author><name>Alan Fehr</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3608</id>
		<title>Profiling Actions</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3608"/>
				<updated>2006-06-19T15:42:36Z</updated>
		
		<summary type="html">&lt;p&gt;Alan Fehr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Profiler]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
= Overview =&lt;br /&gt;
The goal of this project is to add the concept of actions to the Eiffel Studio profiler to make the timing of GUI applications easier.&lt;br /&gt;
&lt;br /&gt;
= Main Functionality =&lt;br /&gt;
* In the code the user can add&lt;br /&gt;
&lt;br /&gt;
 action_timer.start_action (&amp;quot;myAction&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 -- action to time&lt;br /&gt;
 &lt;br /&gt;
 action_timer.stop_action&lt;br /&gt;
&lt;br /&gt;
: around interesting parts of code.&lt;br /&gt;
&lt;br /&gt;
* The tool checks if the directory already contains a file named myAction.br (base run). If it does a file named myAction.cr (comparison run) is created, otherwise the base run file is created.&lt;br /&gt;
* Then the user can view the timed actions (requires base and comparison runs exist) to see if his code modifications slowed down or speeded up the code&lt;br /&gt;
&lt;br /&gt;
= Implementation =&lt;br /&gt;
* I modified the files eif_option.h and option.c in the run-time. When an action ends I save the profiling information into a file with the name of the action. After that the profiling stack is freed and reinitialized:&lt;br /&gt;
 ht_free(class_table);&lt;br /&gt;
 prof_stack_free();&lt;br /&gt;
 initprf();&lt;br /&gt;
* For this to work &amp;lt;tt&amp;gt;stop_profile&amp;lt;/tt&amp;gt; has been modified to check a flag and not report a profile stack corruption if the flag is true.&lt;br /&gt;
&lt;br /&gt;
* When the Action Timer is invoked it checks the given directory for .br and .cr files and if both are present with the same name the action is added to the list.&lt;br /&gt;
** The files are parsed using a subclass of &amp;lt;tt&amp;gt;PROFILE_CONVERTER&amp;lt;/tt&amp;gt; which overrides a feature so the converted information isn't written to disk.&lt;br /&gt;
* A new class inheriting from &amp;lt;tt&amp;gt;PROFILE_INFORMATION&amp;lt;/tt&amp;gt; has been added to make total execution time always available.&lt;br /&gt;
* The actions are then displayed with a comparison of the execution times and with detailed profiling information.&lt;br /&gt;
= Screenshots =&lt;/div&gt;</summary>
		<author><name>Alan Fehr</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3607</id>
		<title>Profiling Actions</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3607"/>
				<updated>2006-06-19T15:32:56Z</updated>
		
		<summary type="html">&lt;p&gt;Alan Fehr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Profiler]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
= Overview =&lt;br /&gt;
The goal of this project is to add the concept of actions to the Eiffel Studio profiler to make the timing of GUI applications easier.&lt;br /&gt;
&lt;br /&gt;
= Main Functionality =&lt;br /&gt;
* In the code the user can add&lt;br /&gt;
&lt;br /&gt;
 action_timer.start_action (&amp;quot;myAction&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 -- action to time&lt;br /&gt;
 &lt;br /&gt;
 action_timer.stop_action&lt;br /&gt;
&lt;br /&gt;
: around interesting parts of code.&lt;br /&gt;
&lt;br /&gt;
* The tool checks if the directory already contains a file named myAction.br (base run). If it does a file named myAction.cr (comparison run) is created, otherwise the base run file is created.&lt;br /&gt;
* Then the user can view the timed actions (requires base and comparison runs exist) to see if his code modifications slowed down or speeded up the code&lt;br /&gt;
&lt;br /&gt;
= Implementation =&lt;br /&gt;
I modified the files eif_option.h and option.c in the run-time. When an action ends I save the profiling information into a file with the name of the action. After that I free the profiling stack and reinitialize it:&lt;br /&gt;
 ht_free(class_table);&lt;br /&gt;
 prof_stack_free();&lt;br /&gt;
 initprf();&lt;br /&gt;
For this to work I modified &amp;lt;tt&amp;gt;stop_profile&amp;lt;/tt&amp;gt; to check a flag and not report a profile stack corruption if the flag is true.&lt;br /&gt;
&lt;br /&gt;
When the Action Timer is invoked it checks the given directory for .br and .cr files and if both are present with the same name the action is added to the list. The files are parsed using a subclass of &amp;lt;tt&amp;gt;PROFILE_CONVERTER&amp;lt;/tt&amp;gt; which overides a feature so the converted information isn't written to disk.&lt;/div&gt;</summary>
		<author><name>Alan Fehr</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3606</id>
		<title>Profiling Actions</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Profiling_Actions&amp;diff=3606"/>
				<updated>2006-06-19T15:23:43Z</updated>
		
		<summary type="html">&lt;p&gt;Alan Fehr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Profiler]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
= Overview =&lt;br /&gt;
The goal of this project is to add the concept of actions to the Eiffel Studio profiler to make the timing of GUI applications easier.&lt;br /&gt;
&lt;br /&gt;
= Main Functionality =&lt;br /&gt;
* In the code the user can add&lt;br /&gt;
&lt;br /&gt;
 action_timer.start_action (&amp;quot;myAction&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 -- action to time&lt;br /&gt;
 &lt;br /&gt;
 action_timer.stop_action&lt;br /&gt;
&lt;br /&gt;
: around interesting parts of code.&lt;br /&gt;
&lt;br /&gt;
* The tool checks if the directory already contains a file named myAction.br (base run). If it does a file named myAction.cr (comparison run) is created, otherwise the base run file is created.&lt;br /&gt;
* Then the user can view the timed actions (requires base and comparison runs exist) to see if his code modifications slowed down or speeded up the code&lt;br /&gt;
&lt;br /&gt;
= Implementation =&lt;br /&gt;
I modified the files eif_option.h and option.c in the run-time. When an action ends I save the profiling information into a file with the name of the action. After that I free the profiling stack and reinitialize it:&lt;br /&gt;
 ht_free(class_table);&lt;br /&gt;
 prof_stack_free();&lt;br /&gt;
 initprf();&lt;br /&gt;
For this to work I modified &amp;lt;tt&amp;gt;stop_profile&amp;lt;/tt&amp;gt; to check a flag and not report a profile stack corruption if the flag is true.&lt;/div&gt;</summary>
		<author><name>Alan Fehr</name></author>	</entry>

	</feed>