C++ Gtk&x2B;3(C)与gtkmm 3(CPP)的速度问题与ListStore的对比->;附加()
以下是两个功能相同的程序。给定完全相同的数据集,用C编写的Gtk+3过程运行时间为0.03秒。用C++编写的GTKMM 3程序运行30秒。Gtk+使用“GtkListStore*store”,gtkmm使用“Glib::RefPtrGtk::ListStore m_refListStore;” 所以,问题是,gtkmm真的要慢1000倍吗?或者,我在声明gtkmm ListStore时遗漏了什么?谢谢你的意见 Gtk+3英寸C GtkListStore*商店C++ Gtk&x2B;3(C)与gtkmm 3(CPP)的速度问题与ListStore的对比->;附加(),c++,treeview,gtk3,gtkmm,C++,Treeview,Gtk3,Gtkmm,以下是两个功能相同的程序。给定完全相同的数据集,用C编写的Gtk+3过程运行时间为0.03秒。用C++编写的GTKMM 3程序运行30秒。Gtk+使用“GtkListStore*store”,gtkmm使用“Glib::RefPtrGtk::ListStore m_refListStore;” 所以,问题是,gtkmm真的要慢1000倍吗?或者,我在声明gtkmm ListStore时遗漏了什么?谢谢你的意见 Gtk+3英寸C GtkListStore*商店 while ((row = mysq
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中的gtkmm3
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];
}
请添加一个最小且可重复的示例,以便我们可以测试自己。似乎与设置到TreeView列中的每个字符串中的数据量有关。Gtk+在处理大字符串(180..300个字符长)时没有问题,因为gtkmm的速度是指数级的。基本上,除非数据很小,否则gtkmm是填充的,即使如此(使每个字符串仅3个字符长,可容纳100000条记录),它的运行速度也比其C计数器部分慢14倍。Bob-我编写了最小的代码并尝试添加它,但不断出现格式错误,尽管我不介意输入,我根本没有时间去研究StackOverflow的特质。不过,感谢您的输入,这直接让我们了解到问题在于每个字符串的长度。哦,这太不幸了。至少你找到了答案。