But there might other things that come into play. In neovim setline() seems 
to be much faster (when it's setting multiple lines).

For example:

======================================================

neovim lua

======================================================

local getlines = vim.api.nvim_buf_get_lines
local setlines = vim.api.nvim_buf_set_lines
local exec = vim.cmd

function LuaTest()
  local totallen = 0
  local start = vim.fn.reltime()
  exec 'new'
  exec 'call setline(1, range(100000))'
  exec ('echom "After setting lines to range: "' .. 
vim.fn.reltimestr(vim.fn.reltime(start)))
  local bnr = vim.fn.bufnr()
  local lines = getlines(bnr, 0, -1, false)
  for i = 1, 100000 do
    lines[i] = '    ' .. lines[i]
    totallen = totallen + lines[i]:len()
  end
  setlines(bnr, 0, -1, false, lines)
  exec ('echom ' .. totallen)
  exec ('echom ' .. vim.fn.reltimestr(vim.fn.reltime(start)))
  exec 'bwipe!'
end

======================================================

Result:
After setting lines to range:  0.062205
888890
0.200782

======================================================

gVim 8.2

======================================================

vim9script

def VimTest1(): void
    echom 'VimTest1'
    var totallen = 0
    var start = reltime()
    new
    setline(1, range(100000))
    echom 'After setting lines to range: ' .. reltimestr(reltime(start))
    for i in range(1, 100000)
        setline(i, '    ' .. getline(i))
        totallen += len(getline(i))
    endfor
    echom totallen
    echom 'After processing loop: ' .. reltimestr(reltime(start))
    bwipe!
enddef

def VimTest2(): void
    echom 'VimTest2'
    var totallen = 0
    var start = reltime()
    new
    setline(1, range(100000))
    echom 'After setting lines to range: ' .. reltimestr(reltime(start))
    var lines = getline(1, 100000)
    for i in range(100000)
        lines[i] = '    ' .. lines[i]
        totallen += len(lines[i])
    endfor
    echom 'After processing loop: ' .. reltimestr(reltime(start))
    setline(1, lines)
    echom 'After setting modified lines: ' .. reltimestr(reltime(start))
    echom totallen
    echom reltimestr(reltime(start))
    bwipe!
enddef

def g:VimTests(): void
    VimTest1()
    VimTest2()
enddef

======================================================

Result:
VimTest1
After setting lines to range:   0.092458
888890
After processing loop:   0.310901
VimTest2
After setting lines to range:   0.110934
After processing loop:   0.241299
After setting modified lines:   0.365874
888890
  0.375667

Il giorno martedì 11 gennaio 2022 alle 14:18:25 UTC+1 Gianmaria Bajo ha 
scritto:

> I repeated those tests multiple times. It seems to be a bit slower, yes.
>
> vim9script
>
> def VimTest1(): void
>
>     var totallen = 0
>     var start = reltime()
>     new
>     call setline(1, range(100000))
>     for i in range(1, 100000)
>         setline(i, '    ' .. getline(i))
>         totallen += len(getline(i))
>     endfor
>     echom 'VimTest1'
>
>     echom totallen
>     echom reltimestr(reltime(start))
>     bwipe!
> enddef
>
> def VimTest2(): void
>
>     var totallen = 0
>     var start = reltime()
>     new
>     setline(1, range(100000))
>     var lines = getline(1, 100000)
>     for i in range(100000)
>         lines[i] = '    ' .. lines[i]
>         totallen += len(lines[i])
>     endfor
>     setline(1, lines)
>     echom 'VimTest2'
>
>     echom totallen
>     echom reltimestr(reltime(start))
>     bwipe!
> enddef
>
> def g:VimTests(): void
>     VimTest1()
>     VimTest2()
> enddef
>
> Il giorno martedì 11 gennaio 2022 alle 14:07:55 UTC+1 [email protected] 
> ha scritto:
>
>>
>> On Di, 11 Jan 2022, Gianmaria Bajo wrote: 
>>
>> > Even getting/setting lines in one go (as in the lua version) doesn't 
>> improve it for me: 
>> > 
>> > vim9script 
>> > 
>> > def g:VimTest(): void 
>> > var totallen = 0 
>> > var start = reltime() 
>> > new 
>> > setline(1, range(100000)) 
>> > var lines = getline(1, 100000) 
>> > for i in range(100000) 
>> > lines[i] = ' ' .. lines[i] 
>> > totallen += len(lines[i]) 
>> > endfor 
>> > setline(1, lines) 
>> > echom totallen 
>> > echom reltimestr(reltime(start)) 
>> > bwipe! 
>> > enddef 
>> > 
>> > Result: 
>> > 
>> > :call VimTest() 
>> > 888890 
>> > 0.330822 
>>
>> That is even slower? 
>>
>>
>>
>> Mit freundlichen Grüßen 
>> Christian 
>> -- 
>> Mit welcher Geschwindigkeit breitet sich das Dunkel aus? 
>>
>

-- 
-- 
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/17eb9318-270a-44f5-b5e0-093a4df38635n%40googlegroups.com.

Reply via email to