ruby - 减少基于 gtk2 和 ocra 构建的 ruby​​ 应用程序的加载时间

标签 ruby exe 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它为我构建了一个 exe 文件,以便用户可以在不安装 ruby​​ 或其软件包的情况下运行它。

所以我运行ocra my_program.rb --windows,它给了我一个很好的exe文件,名为my_program.exe

问题:当我启动 my_program.exe 时,加载该程序需要 25 到 30 秒。

系统托盘图标需要 1 秒才能启动,打包为 exe 文件时需要 30 倍的时间才能启动。

有什么可能的方法来减少这个加载时间。预先非常感谢您。

编辑:注意后,我将 ocra exe 创建更改为 ocra my_program.rb --windows --no-lzma。这个解决方案节省了我 10 秒的时间,现在程序加载大约需要 18-20 秒。

我可以对其进行更多优化以缩短加载时间吗?请帮忙。

最佳答案

请参阅此处有关相关主题的讨论:

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

这可能会有所帮助。

关于ruby - 减少基于 gtk2 和 ocra 构建的 ruby​​ 应用程序的加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32328636/

相关文章:

ruby - 如何定义接受其初始化参数作为散列的 Ruby Struct?

ruby - 在 rails 3.1 中几秒钟后重定向

java - 如何从Netbeans java项目制作exe文件以在所有没有JVM的系统中运行?

c++ - 链接器是将整个库包含到 .exe 文件还是仅包含该库中程序中使用的函数?

java - 在 Eclipse 中开发 App Engine/Java 项目时是否需要重新启动服务器?

java - 如何将 Java 程序转换为 .exe 文件?

c - 将 GTK 窗口放在屏幕的一角

c - 如何获取 Gtk2 GtkDrawingArea 的 XID 来嵌入 Mplayer

c++ - 刷新 GTK+ 小部件中显示的文本?

ruby - 正则表达式中的可选空格