如何解决Gtk+ 3 (C) vs gtkmm 3 (CPP) ListStore->append() 速度问题
以下是两个功能相同的程序。给定完全相同的数据集,用 C 编写的 Gtk+3 程序运行时间为 0.03 秒。用 C++ 编写的 gtkmm 3 程序在 30 秒内运行。 Gtk+ 使用“GtkListStore *store”,gtkmm 使用“Glib::RefPtrGtk::ListStore m_refListStore;”。
那么,问题是,gtkmm 真的慢了 1000 倍吗?或者,我是否在声明 gtkmm ListStore 时遗漏了什么?感谢您的任何意见。
C 中的 Gtk+ 3
GtkListStore *store;
while ((row = mysql_fetch_row(res)))
{
/* Append a row and fill in some data */
gtk_list_store_append (store,&iter);
gtk_list_store_set (store,&iter,DIRECTORY_NAME,row[1],FILE_NAME,row[3],EXTENTION,row[5],FILE_SIZE,row[6],FILE_DATE,row[7],-1);
}
CPP 中的 gtkmm 3
Glib::RefPtrGtk::ListStore m_refListStore;
while ((mysql_row = mysql_fetch_row(res)))
{
/* Append a row and fill in some data */
Gtk::ListStore::Row row = *(m_refListStore->append());
row[m_Columns.m_directory_name] = mysql_row[1];
row[m_Columns.m_file_name] = mysql_row[3];
row[m_Columns.m_file_extention] = mysql_row[5];
row[m_Columns.m_file_size] = mysql_row[6];
row[m_Columns.m_file_date] = mysql_row[7];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。