summaryrefslogtreecommitdiffhomepage
path: root/mixutils
diff options
context:
space:
mode:
authorjaortega <jaortega>2000-12-23 02:53:20 +0000
committerjaortega <jaortega>2000-12-23 02:53:20 +0000
commitda0e97de3890e81039469434a2e07d56f5492d78 (patch)
tree75f86e5e250809e1b9a36db8b576eeb4ef2f2483 /mixutils
parent16fe787eb288e00b9edca460b0cef376194849fb (diff)
downloadmdk-da0e97de3890e81039469434a2e07d56f5492d78.tar.gz
mdk-da0e97de3890e81039469434a2e07d56f5492d78.tar.bz2
(trace_time_) new function tracing execution times
(cmd_run_, cmd_next_) use of trace_time_ for printing execution times
Diffstat (limited to 'mixutils')
-rw-r--r--mixutils/mixvm_command.c34
1 files changed, 30 insertions, 4 deletions
diff --git a/mixutils/mixvm_command.c b/mixutils/mixvm_command.c
index 2c07be7..631b66d 100644
--- a/mixutils/mixvm_command.c
+++ b/mixutils/mixvm_command.c
@@ -199,6 +199,9 @@ static mix_dump_context_t *dc_ = NULL;
static mix_eval_t *eval_ = NULL;
/* trace status */
static gboolean is_tracing_ = FALSE;
+/* uptime */
+static mix_time_t uptime_ = 0;
+static mix_time_t prog_time_ = 0;
static int
@@ -267,12 +270,14 @@ cmd_load_ (char *arg)
fprintf (stderr, _("Program loaded. Start address: %d\n"),
mix_vm_get_prog_count (vm_));
+ prog_time_ = 0;
+
return TRUE;
}
/* trace current instruction */
static void
-trace_ ()
+trace_ (void)
{
enum {BUFFER_LEN = 128};
static gchar STRINS[BUFFER_LEN];
@@ -295,7 +300,7 @@ trace_ ()
}
static int
-run_and_trace_ ()
+run_and_trace_ (void)
{
int k = MIX_VM_OK;
if (!is_tracing_)
@@ -308,6 +313,16 @@ run_and_trace_ ()
return k;
}
+static void
+print_time_ (void)
+{
+ mix_time_t lapse = mix_vm_get_uptime(vm_) - uptime_;
+ uptime_ += lapse;
+ prog_time_ += lapse;
+ printf(_("Elapsed time: %ld /Total program time: %ld (Total uptime: %ld)\n"),
+ lapse, prog_time_, uptime_);
+}
+
static int
cmd_run_ (char *arg)
{
@@ -315,7 +330,11 @@ cmd_run_ (char *arg)
return TRUE;
puts (_("Running ..."));
- if (mix_vm_is_halted (vm_)) mix_vm_reset_program (vm_);
+ if (mix_vm_is_halted (vm_))
+ {
+ mix_vm_reset_program (vm_);
+ prog_time_ = 0;
+ }
switch (run_and_trace_ ())
{
@@ -340,6 +359,7 @@ cmd_run_ (char *arg)
g_assert_not_reached ();
break;
}
+ print_time_ ();
return TRUE;
}
@@ -362,6 +382,12 @@ cmd_next_ (char *arg)
ins_no = atoi (arg);
}
+ if (mix_vm_is_halted (vm_))
+ {
+ mix_vm_reset_program (vm_);
+ prog_time_ = 0;
+ }
+
while ( ins_no-- > 0 )
{
if (is_tracing_) trace_ ();
@@ -379,7 +405,7 @@ cmd_next_ (char *arg)
break;
}
}
-
+ print_time_ ();
return TRUE;
}