blob: b9f7bd179da88958d971ebf2a34a09e6d0da0d94 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
" 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
|