8

From 11.34s to 0.625s for opening a .rb file in Vim

 3 years ago
source link: https://www.devroom.io/2012/03/21/from-11-34s-to-0-625s-for-opening-a-rb-file-in-vim/?utm_campaign=Feed%3A+ariejan+%28ariejan%7Cdevroom.io%29
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

From 11.34s to 0.625s for opening a .rb file in Vim

Posted: 2012-03-21 - Last updated: 2019-06-05

Tagged ruby vim

Would you believe me if I told you that opening a simple Ruby file on my 2011 MacBook Pro takes 11.34 seconds?

To test this, I’ve used this command:

$ vim --startuptime log-before.txt app/models/user.rb

This command will time everything that Vim does until the file is ready for you to edit down to the millisecond. This is a great way to find out what’s slowing things down.

I’ll highlight the most interesting parts of log-before.txt here:

  000.028  000.028: --- VIM STARTING ---
 6643.597  5496.976  5496.976: sourcing /usr/share/vim/vim73/ftplugin/ruby.vim
11262.686  3963.993  3963.993: sourcing /Users/ariejan/.vim/bundle/vim-css-color/after/syntax/css.vim
11263.907  3976.912  004.334: sourcing /usr/share/vim/vim73/syntax/html.vim
11263.997  3977.361  000.449: sourcing /usr/share/vim/vim73/syntax/xhtml.vim
11340.533  000.004: --- VIM STARTED ---

These are the big spenders of loading a ruby file. Firstly there is ruby.vim taking about 5.4 seconds to load. Then there is css.vim taking another 3.9 seconds - and this file doesn’t even include CSS!

These two time sinking hogs are keeping me back – 11 seconds at a time.

Let’s see, vim-css-color. This plugin shows color hashes in their actual colour. So #00f will have a blue background. Great when editing CSS files, but not all that import. I removed vim-css-color.

Note: the reason vim-css-color is slow with terminal vim is that is has to pre-compile colour hashes to ther xterm escape code equivalents. This is pretty time consuming.

Next up: ruby.vim. Why is this so bloody slow?

As it turns out, Vim has trouble finding the right ruby for me. This can be remedied by adding the following snippet to your ~/.vimrc. It sets a logical search path for ruby:

if !empty($MY_RUBY_HOME)
 let g:ruby_path = join(split(glob($MY_RUBY_HOME.'/lib/ruby/*.*')."\n".glob($MY_RUBY_HOME.'/lib/ruby/site_ruby/*'),"\n"),',')
endif

Again I ran my timer command (full output):

$ vim --startuptime log-after app/models/user.rb

Now look at that:

000.034  000.034: --- VIM STARTING ---
107.182  000.834  000.834: sourcing /usr/share/vim/vim73/ftplugin/ruby.vim
625.001  000.003: --- VIM STARTED ---

Yes, that is 0.625 seconds! I’m a happy ruby coder again.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK