On Mon, 2018-10-08 at 14:06 +0200, Andrea Giammarchi wrote:
> about this:
> > is there any way to create callbacks from the javascript world
> > using the
> Webkit2Gtk webview?
> I've created a JSON communication channel between GJS and the
> WebViewthrough title notifications:
> https://gist.github.com/WebReflection/7ab0addec037508cc8380a9c37d285f2#gistcomment-2245132
> 
> The nitty-gritty is that you change your title from the page
> ```jsdocument.title = `${SECRET}:js=${JSON.stringify(data)}`;```
> and you intercept it from GJS side
> ```jswebView.connect('notify::title', (self, params) => {  if
> (`${SECRET}`:js=/.test(self.title)) {    const data =
> JSON.parse(self.title.slice(SECRET.length + 4));    // do stuff ...
> then ...    const response =
> {};    self.run_javascript(      `document.dispatchEvent(        new
> CustomEvent(          '${SECRET}:gjs',          {detail:
> ${JSON.stringify(response)}}        )      );`,      null,      (self
> , result, error) =>
> {        self.run_javascript_finish(result);      }    );  }});```
> This way you can pass any serializable data to the listener and
> sendeventually data back. The SECRET can be any channel, for circular
> data justuse one of the many circular JSON parsers/stringifiers (i.e.
> flatted orCircularJSON)
> Hope this helps at least with the last part of the question.
> P.S. on DOM, a table with 1.000.000 rows would be slow as well, the
> way I'mscaling these kind of tables on DOM is by rendering only
> what's visible(fixed rows height helps a lot with this) virtually
> updating the scroll barwhich is **not** the native one or performance
> will be super bad regardless.
> 
> 
> On Mon, Oct 8, 2018 at 12:44 PM ente <e...@ck76.de> wrote:
> > Hi,
> > I am facing performance issues in GTK upon presenting a big amount
> > oftabular data. First I used GtkListbox for it's layout
> > flexibility. Handlingmore than 10,000 items gets inacceptable slow.
> > Switching to GtkTreeview Ican handle some 300,000 items after
> > applying a few optimizations (columnsizing fixed, fixed height
> > mode): a full load takes about 4 seconds, i.e.the application feels
> > anything but "responsive" although this is ... ok.Currently I see 2
> > options: dropping Gtk in favor of a HTML frontend (thatfeels
> > awkward to say) or implementing paging on the GtkTreeview.
> > At this moment I am analyzing the reasons for the performance
> > issues. Imeasured the time it takes to generate a number of labels
> > in a simple loop(no call ot GtkMain) and to add those labels to a
> > GtkBox:* 100 labels in 1.7 ms* 1,000 labels in 20.9 ms* 10,000
> > labels in 610 ms* 100,000 labels in 1m18sAfter the loop I pack the
> > GtkBox into a window and show it. That takesanother century to show
> > up.If I adjust the loop to skip the packing of the labels into the
> > box, thetimes are down to:* 10,000 labels in 115 ms* 100,000 labels
> > in 940ms
> > The windows shows up instantly (although empty of course).
> > So my performance issue is related to the packing. In my tests with
> > theGtkTreeview it seems speficially to boil down to the sizing and
> > signallingof the items: The performance of the treeview was highly
> > impacted by thefixed height mode & the fixed column sizing (more
> > than ordering by a columnor calling GtkMain while adding rows). So
> > my question goes down to: How canI further optimize my way of using
> > GTK in order to speed up UI? Is thereany way to add 1,000,000
> > labels to a GtkBox in less than a second? Could Isomehow suspend
> > the signalling during UI creation and replace it by a "I amdone,
> > now calculate all the sizes" signal? Am I wrong about my
> > assumptionthat the sizing signalling is the cause for the low
> > performance?
> > With regards to the treeview: After initially creating the data
> > rows I amcalculating values that affect 4 columns out of 10
> > columns. So far Idetermine the GtkTreeIter of the affected row and
> > update all cells in thatrow using gtk_list_store_set. Should I
> > adjust to update the affectedcolumns only? When I implement paging
> > for the TreeView: should I ratherdrop the existing ListStore and
> > create a new or is it faster to overwriteall elements in the
> > Liststore with the new items?
> > I tried to use the GtkBuilder in order to setup a box with 100,000
> > labels.This performance was somewhat the same as creating the
> > labels in a loop (Ididn't keep the measurements).
> > I could isolate the problem to UI rendering. If I don't assign
> > myListStore to the Treeview, all is fine. As soon as my ListStore
> > is filled,I assign the model to the treeview. That's the most time
> > consuming step.
> > Last question: is there any way to create callbacks from the
> > javascriptworld using the Webkit2Gtk webview? More specificly: I am
> > working in golanguage. I am aware of the webview widget.
> > Unfortunately that's a window.I would prefer to rather place a
> > widget into a native GtkApplicationWindow.Using Eval I can inject
> > anything into the DOM. How do I get events from theDOM back to go?
> > 
> > Background on the application:I am developing a text analysis
> > application. Text fragments getprecalculated attributes assigned.
> > Based on these attributes and theLevensthein distance between
> > fragments, someone is supposed to (for now:manually) define text
> > fragment categories (categories). Roughly speakingthe application
> > has a paned window: on the left I show the category list oran
> > editor for a new / existing category; on the right I show a list of
> > textfragments with the major 3 attributes or a details view on a
> > specificfragment: all attributes and a list of similar fragments.
> > The smallest amount of text fragments to be analyzed and
> > categorized isabout 300,000 items. The number of items goes easily
> > up to 5,000,000 oreven much more. Categorizing all fragments
> > requires about 100 to at maximum1,000 categories, i.e. there is
> > quite some clustering among those textfragments. On the interface I
> > work with highlight colors: a human caneasily realize which
> > fragements are already clustered and which aren't.Usually only a
> > small number of text fragment categories are of specialinterest.
> > One could compare it to a log file: I don't care so much abouthow
> > often someone sucessfully authorized; it is much more interesting
> > ifsomeone suddenly fails to authorize.
> > 
> > thanx,
> > 
> > ente_______________________________________________gtk-list mailing
> > listgtk-l...@gnome.org
> > https://mail.gnome.org/mailman/listinfo/gtk-list
> > 

A brilliant idea!

thanks,

ente
_______________________________________________
gtk-list mailing list
gtk-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to