Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Gtk&x2B;3(C)与gtkmm 3(CPP)的速度问题与ListStore的对比->;附加()_C++_Treeview_Gtk3_Gtkmm - Fatal编程技术网

C++ Gtk&x2B;3(C)与gtkmm 3(CPP)的速度问题与ListStore的对比->;附加()

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

以下是两个功能相同的程序。给定完全相同的数据集,用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 = 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的特质。不过,感谢您的输入,这直接让我们了解到问题在于每个字符串的长度。哦,这太不幸了。至少你找到了答案。