Уменьшить время загрузки приложения ruby, построенного на gtk2 и ocra.

Вставьте небольшой пример, который запускает значок на панели задач с помощью gtk2 gem.

#!/usr/bin/env ruby
# encoding: UTF-8

require 'gtk2'

si=Gtk::StatusIcon.new
si.stock=Gtk::Stock::DIALOG_INFO
si.tooltip='StatusIcon'
si.signal_connect('activate'){|icon| icon.blinking=!(icon.blinking?)}

info=Gtk::ImageMenuItem.new(Gtk::Stock::INFO)
info.signal_connect('activate'){p "Embedded: #{si.embedded?}"; p "Visible: #{si.visible?}"; p "Blinking: #{si.blinking?}"}
quit=Gtk::ImageMenuItem.new(Gtk::Stock::QUIT)
quit.signal_connect('activate'){Gtk.main_quit}
menu=Gtk::Menu.new
menu.append(info)
menu.append(Gtk::SeparatorMenuItem.new)
menu.append(quit)
menu.show_all
si.signal_connect('popup-menu'){|tray, button, time| menu.popup(nil, nil, button, time)}

si.signal_connect('scroll-event'){|icon, event|
    modifier=event.state#A GdkModifierType indicating the state of modifier keys and mouse buttons
##Handle only control and shift key
    ctrl_shift=(Gdk::Window::CONTROL_MASK|Gdk::Window::SHIFT_MASK)
    mod=modifier&ctrl_shift
    case mod
    when 0
        print "(None)"
    when Gdk::Window::CONTROL_MASK
        print "Control+"
    when Gdk::Window::SHIFT_MASK
        print "Shift+"
    when (Gdk::Window::CONTROL_MASK|Gdk::Window::SHIFT_MASK)
        print "Control+Shift+"
    end
##Check for direction
    case event.direction
    when Gdk::EventScroll::UP
        print "up\n"
    when Gdk::EventScroll::DOWN
        print "down\n"
    end
}

exit if defined?(Ocra)
Gtk.main 

Это работает за секунду, если я запускаю его как ruby-скрипт, т.е. ruby my_program.rb

Но я хотел бы распространять его, поэтому я выбрал OCRA, который создает исполняемый файл, чтобы пользователь мог запускать это без установленного ruby ​​​​или его пакетов.

Итак, я запускаю ocra my_program.rb --windows, и он дает мне хороший exe-файл с именем my_program.exe.

Проблема: когда я запускаю my_program.exe, загрузка программы занимает от 25 до 30 секунд.

Значок на панели задач занимает 1 секунду и занимает в 30 раз больше времени для запуска, если он упакован в виде исполняемого файла.

Есть ли способ уменьшить это время загрузки. Заранее большое спасибо.

РЕДАКТИРОВАТЬ: После предупреждения я изменил создание файла ocra exe на ocra my_program.rb --windows --no-lzma. Это решение сэкономило мне 10 секунд, и теперь загрузка программы занимает около 18-20 секунд.

Могу ли я оптимизировать его для более короткого времени загрузки? Пожалуйста помоги.


person Supersonic    schedule 01.09.2015    source источник
comment
На первый взгляд: в OCRA README указано, что сжатие включено по умолчанию «LZMA Compression (необязательно, по умолчанию включено)». Попробуйте отключить его, это должно уменьшить время загрузки за счет размера exe-файла.   -  person Aleksei Matiushkin    schedule 01.09.2015
comment
Обновили ответ. Спасибо за внимание.   -  person Supersonic    schedule 01.09.2015
comment
возможно, это обсуждение содержит несколько советов для вас programming.nullanswer.com/question/28323543   -  person dimakura    schedule 05.09.2015
comment
@dimakura: Не могли бы вы опубликовать это как ответ, я приму его.   -  person Supersonic    schedule 07.09.2015


Ответы (1)


См. обсуждение по соответствующей теме здесь:

http://programming.nullanswer.com/question/28323543

Это может быть полезно.

person dimakura    schedule 07.09.2015