view src/testdir/popupbounce.vim @ 21550:b0b57d91671c v8.2.1325

patch 8.2.1325: Vim9: using Vim9 script for autaload not tested Commit: https://github.com/vim/vim/commit/ea2d8d25718836bf627b67b7fcd28a1e528bb7b9 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jul 29 22:11:05 2020 +0200 patch 8.2.1325: Vim9: using Vim9 script for autaload not tested Problem: Vim9: using Vim9 script for autaload not tested. Solution: Add a test. Update help.
author Bram Moolenaar <Bram@vim.org>
date Wed, 29 Jul 2020 22:15:05 +0200
parents 9606c0adc148
children
line wrap: on
line source

" Use this script to measure the redrawing performance when a popup is being
" displayed.  Usage with gcc:
"    cd src
"    # Edit Makefile to uncomment PROFILE_CFLAGS and PROFILE_LIBS
"    make reconfig
"    ./vim --clean -S testdir/popupbounce.vim main.c
"    gprof vim gmon.out | vim -

" using line continuation
set nocp

" don't switch screens when quitting, so we can read the frames/sec
set t_te=

let winid = popup_create(['line1', 'line2', 'line3', 'line4'], {
	      \   'line' : 1,
	      \   'col' : 1,
	      \   'zindex' : 101,
	      \ })
redraw

let start = reltime()
let framecount = 0

let line = 1.0
let col = 1
let downwards = 1
let col_inc = 1
let initial_speed = 0.2
let speed = initial_speed
let accel = 1.1
let time = 0.1

let countdown = 0

while 1
  if downwards
    let speed += time * accel
    let line += speed
  else
    let speed -= time * accel
    let line -= speed
  endif

  if line + 3 >= &lines
    let downwards = 0
    let speed = speed * 0.8
    let line = &lines - 3
  endif
  if !downwards && speed < 1.0
    let downwards = 1
    let speed = initial_speed
    if line + 4 > &lines && countdown == 0
      let countdown = 50
    endif
  endif

  let col += col_inc
  if col + 4 >= &columns
    let col_inc = -1
  elseif col <= 1
    let col_inc = 1
  endif

  call popup_move(winid, {'line': float2nr(line), 'col': col})
  redraw
  let framecount += 1
  if countdown > 0
    let countdown -= 1
    if countdown == 0
      break
    endif
  endif

endwhile

let elapsed = reltimefloat(reltime(start))
echomsg framecount .. ' frames in ' .. string(elapsed) .. ' seconds, ' .. string(framecount / elapsed) .. ' frames/sec'

qa