Tcl Source Code

Artifact [bcc4a5eab0]
Login

Artifact bcc4a5eab0b580c5dde77e4d9b92310d5df092fc:

Attachment "float-time.diff" to ticket [1202178fff] added by das 2005-05-15 09:43:35.
Index: generic/tclCmdMZ.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclCmdMZ.c,v
retrieving revision 1.119
diff -u -p -r1.119 tclCmdMZ.c
--- generic/tclCmdMZ.c	11 May 2005 00:51:28 -0000	1.119
+++ generic/tclCmdMZ.c	14 May 2005 21:28:25 -0000
@@ -2895,11 +2895,11 @@ Tcl_TimeObjCmd(dummy, interp, objc, objv
     Tcl_Obj *CONST objv[];	/* Argument objects. */
 {
     register Tcl_Obj *objPtr;
+    Tcl_Obj *objs[4];
     register int i, result;
     int count;
     double totalMicroSec;
     Tcl_Time start, stop;
-    char buf[100];
 
     if (objc == 2) {
 	count = 1;
@@ -2926,9 +2926,15 @@ Tcl_TimeObjCmd(dummy, interp, objc, objv
     
     totalMicroSec = ( ( (double) ( stop.sec - start.sec ) ) * 1.0e6
 		      + ( stop.usec - start.usec ) );
-    sprintf(buf, "%.0f microseconds per iteration",
-	((count <= 0) ? 0 : totalMicroSec/count));
-    Tcl_SetObjResult(interp, Tcl_NewStringObj(buf, -1));
+    if (count <= 1) {
+	objs[0] = Tcl_NewIntObj((count <= 0) ? 0 : totalMicroSec);
+    } else {
+	objs[0] = Tcl_NewDoubleObj(totalMicroSec/count);
+    }
+    objs[1] = Tcl_NewStringObj("microseconds", -1);
+    objs[2] = Tcl_NewStringObj("per", -1);
+    objs[3] = Tcl_NewStringObj("iteration", -1);
+    Tcl_SetObjResult(interp, Tcl_NewListObj(4, objs));
     return TCL_OK;
 }