Patch 7.4.1285
Problem:    Cannot measure elapsed time.
Solution:   Add reltimefloat().
Files:      src/ex_cmds2.c, src/eval.c, src/proto/ex_cmds2.pro,
            src/testdir/test_reltime.vim, src/testdir/test_alot.vim


*** ../vim-7.4.1284/src/ex_cmds2.c      2016-01-31 17:30:47.418544455 +0100
--- src/ex_cmds2.c      2016-02-07 21:06:36.249107436 +0100
***************
*** 1010,1015 ****
--- 1010,1033 ----
      return buf;
  }
  
+ # if defined(FEAT_FLOAT) || defined(PROTO)
+ /*
+  * Return a float that represents the time in "tm".
+  */
+     float_T
+ profile_float(proftime_T *tm)
+ {
+ #  ifdef WIN3264
+     LARGE_INTEGER   fr;
+ 
+     QueryPerformanceFrequency(&fr);
+     return (float_T)tm->QuadPart / (float_T)fr.QuadPart;
+ #  else
+     return (float_T)tm->tv_sec + (float_T)tm->tv_usec / 1000000.0;
+ #  endif
+ }
+ # endif
+ 
  /*
   * Put the time "msec" past now in "tm".
   */
*** ../vim-7.4.1284/src/eval.c  2016-02-07 19:57:12.192788494 +0100
--- src/eval.c  2016-02-07 21:06:14.969330987 +0100
***************
*** 690,695 ****
--- 690,698 ----
  static void f_range(typval_T *argvars, typval_T *rettv);
  static void f_readfile(typval_T *argvars, typval_T *rettv);
  static void f_reltime(typval_T *argvars, typval_T *rettv);
+ #ifdef FEAT_FLOAT
+ static void f_reltimefloat(typval_T *argvars, typval_T *rettv);
+ #endif
  static void f_reltimestr(typval_T *argvars, typval_T *rettv);
  static void f_remote_expr(typval_T *argvars, typval_T *rettv);
  static void f_remote_foreground(typval_T *argvars, typval_T *rettv);
***************
*** 8270,8275 ****
--- 8273,8279 ----
      {"range",         1, 3, f_range},
      {"readfile",      1, 3, f_readfile},
      {"reltime",               0, 2, f_reltime},
+     {"reltimefloat",  1, 1, f_reltimefloat},
      {"reltimestr",    1, 1, f_reltimestr},
      {"remote_expr",   2, 3, f_remote_expr},
      {"remote_foreground", 1, 1, f_remote_foreground},
***************
*** 16010,16015 ****
--- 16014,16039 ----
  #endif
  }
  
+ #ifdef FEAT_FLOAT
+ /*
+  * "reltimefloat()" function
+  */
+     static void
+ f_reltimefloat(typval_T *argvars UNUSED, typval_T *rettv)
+ {
+ # ifdef FEAT_RELTIME
+     proftime_T        tm;
+ # endif
+ 
+     rettv->v_type = VAR_FLOAT;
+     rettv->vval.v_float = 0;
+ # ifdef FEAT_RELTIME
+     if (list2proftime(&argvars[0], &tm) == OK)
+       rettv->vval.v_float = profile_float(&tm);
+ # endif
+ }
+ #endif
+ 
  /*
   * "reltimestr()" function
   */
*** ../vim-7.4.1284/src/proto/ex_cmds2.pro      2016-01-19 13:21:55.837334377 
+0100
--- src/proto/ex_cmds2.pro      2016-02-07 21:06:26.701207740 +0100
***************
*** 14,19 ****
--- 14,20 ----
  void profile_end(proftime_T *tm);
  void profile_sub(proftime_T *tm, proftime_T *tm2);
  char *profile_msg(proftime_T *tm);
+ float_T profile_float(proftime_T *tm);
  void profile_setlimit(long msec, proftime_T *tm);
  int profile_passed_limit(proftime_T *tm);
  void profile_zero(proftime_T *tm);
*** ../vim-7.4.1284/src/testdir/test_reltime.vim        2016-02-07 
21:18:51.793382319 +0100
--- src/testdir/test_reltime.vim        2016-02-07 21:17:34.222197665 +0100
***************
*** 0 ****
--- 1,27 ----
+ " Tests for reltime()
+ 
+ if !has('reltime') || !has('float')
+   finish
+ endif
+ 
+ func Test_reltime()
+   let now = reltime()
+   sleep 10m
+   let later = reltime()
+   let elapsed = reltime(now)
+   call assert_true(reltimestr(elapsed) =~ '0\.0')
+   call assert_true(reltimestr(elapsed) != '0.0')
+   call assert_true(reltimefloat(elapsed) < 0.1)
+   call assert_true(reltimefloat(elapsed) > 0.0)
+ 
+   let same = reltime(now, now)
+   call assert_equal('0.000', split(reltimestr(same))[0][:4])
+   call assert_equal(0.0, reltimefloat(same))
+ 
+   let differs = reltime(now, later)
+   call assert_true(reltimestr(differs) =~ '0\.0')
+   call assert_true(reltimestr(differs) != '0.0')
+   call assert_true(reltimefloat(differs) < 0.1)
+   call assert_true(reltimefloat(differs) > 0.0)
+ 
+ endfunc
*** ../vim-7.4.1284/src/testdir/test_alot.vim   2016-01-25 22:20:24.056402843 
+0100
--- src/testdir/test_alot.vim   2016-02-07 21:07:53.276298287 +0100
***************
*** 9,14 ****
--- 9,15 ----
  source test_json.vim
  source test_lispwords.vim
  source test_menu.vim
+ source test_reltime.vim
  source test_searchpos.vim
  source test_set.vim
  source test_sort.vim
*** ../vim-7.4.1284/src/version.c       2016-02-07 20:28:55.988888338 +0100
--- src/version.c       2016-02-07 21:18:02.409901379 +0100
***************
*** 749,750 ****
--- 749,752 ----
  {   /* Add new patch number below this line */
+ /**/
+     1285,
  /**/

-- 
If Apple would build a car...
... it would be powered by the sun, be reliable, five times
as fast and twice as easy to drive; but would only run on
five percent of the roads.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui