Delivered-To: garrigue at math.nagoya-u.ac.jp Authentication-Results: mailhost.math.nagoya-u.ac.jp sender=lablgtk-bounces at yquem.inria.fr; domainkey=neutral (no query protocol specified; no policy for yquem.inria.fr) Delivered-To: lablgtk at yquem.inria.fr DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=wOHbOcL+8r41J2DK3OJms/3D2Ys/vWBEYdWe4M0Fwuk=; b=BANCeZLB6lyTbZiIQhhyzMZrEuX5shEJrSgwCaO0qjRchTiprJ0UFqk+0oe7/QXk7a hTsWTNSzls11S+xcOG7YkstIy4KiG0M7Si8g8wranEBPK/5z6QbNpjBdUyVJnFlW32ka p5E/vyNVhTeT0cJUE7ygbvCP7mtNQqkctdKFU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=DNNP0iJb6/2CJAnqs/98HhnMWt97JxfgHl1J7QKG7Gs3C5N4fYLTb5mmZCq5BpOpWB jD4B53DzaJtLBqkw6/EMdmexr0Vin6xApiKlJMqQOeS+RXvzBMkCMAAyYDU0Zg7JHE2H Xnpg9bZpK5TenmlCIx5ONVA6Gb5zJzHTjanTc= MIME-Version: 1.0 Date: Fri, 3 Sep 2010 19:41:32 -0700 Message-ID: From: yoann padioleau To: lablgtk at yquem.inria.fr Content-Type: multipart/mixed; boundary=0016367fabb13431e4048f65fcef Subject: [Lablgtk] entry completion for hundreds of thousands of items Status: U --0016367fabb13431e4048f65fcef Content-Type: text/plain; charset=ISO-8859-1 Hi, I want to provide some completion for text where the corpus of items is above 100000. I've tried to build a GTree.list_store with those 100000 items but it takes a too long time to build the model. I've then tried to split those 100 000 iterms in chunk of 1000 based on common prefix. Then as the user start to type a string, I build a model with only the relevant 1000 items. But even building a model with only 1000 items takes more than 2 seconds which makes the whole application look slow. Is there a way to accelerate the insertion of items in a list_store ? I've attached my modification of src/examples/entrycompletion.ml showing how slow it is. --0016367fabb13431e4048f65fcef Content-Type: application/octet-stream; name="entrycompletion.ml" Content-Disposition: attachment; filename="entrycompletion.ml" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gdnva7qp0 KCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKQooKiAgICBMYWJsZ3RrIC0gRXhhbXBsZXMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopCigqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KikKKCogICAgVGhlcmUgaXMgbm8gc3BlY2lmaWMgbGljZW5zaW5nIHBvbGljeSwgYnV0IHlvdSBt YXkgZnJlZWx5ICAgICAgICAgICAqKQooKiAgICB0YWtlIGluc3BpcmF0aW9uIGZyb20gdGhlIGNv ZGUsIGFuZCBjb3B5IHBhcnRzIG9mIGl0IGluIHlvdXIgICAgICAgICopCigqICAgIGFwcGxpY2F0 aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKikKKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqKQooKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopCgpsZXQgbW9kZWxf b2ZfbGlzdCBjb252IGwgPQogIGxldCBjb2xzID0gbmV3IEdUcmVlLmNvbHVtbl9saXN0IGluCiAg bGV0IGNvbHVtbiA9IGNvbHMjYWRkIGNvbnYgaW4KICBsZXQgY29sdW1uMiA9IGNvbHMjYWRkIGNv bnYgaW4KICBsZXQgY29sdW1uMyA9IGNvbHMjYWRkIGNvbnYgaW4KICBsZXQgaWNvbl9jID0gY29s cyNhZGQgR3RrU3RvY2suY29udiBpbgoKICBsZXQgbW9kZWwgPSBHVHJlZS5saXN0X3N0b3JlIGNv bHMgaW4KICBMaXN0Lml0ZXIKICAgIChmdW4gZGF0YSAtPgogICAgICBsZXQgcm93ID0gbW9kZWwj YXBwZW5kICgpIGluCiAgICAgIG1vZGVsI3NldCB+cm93IH5jb2x1bW4gZGF0YTsKICAgICAgbW9k ZWwjc2V0IH5yb3cgfmNvbHVtbjpjb2x1bW4yIGRhdGE7CiAgICAgIG1vZGVsI3NldCB+cm93IH5j b2x1bW46Y29sdW1uMyBkYXRhOwogICAgICBtb2RlbCNzZXQgfnJvdyB+Y29sdW1uOmljb25fYyBg WUVTOwogICAgKQogICAgbCA7CiAgKG1vZGVsLCBjb2x1bW4sIGljb25fYykKCmxldCByZWMgYnVp bGRfbGlzdCBuID0KICBpZiBuID0gMCB0aGVuIFtdCiAgZWxzZSAoImEiIF4gc3RyaW5nX29mX2lu dCBuIF4gImZvb2JhciB0aGlzIGlzICIgXiBzdHJpbmdfb2ZfaW50IG4pOjoKICAgIGJ1aWxkX2xp c3QgKG4gLSAxKQoKbGV0IHN0cmluZ19jb21wbGV0aW9uX2xpc3QgPQogIFsgImhlbGxvIiA7ICJo ZWxsbyB3b3JsZCIgOyAiYWJjZGVmIiA7ICJhYmN4eXoiIF0gQAogIGJ1aWxkX2xpc3QgMTAwMAoK bGV0IHNldHVwIHBhY2tpbmcgZW50cnkgPQogIGxldCBib3ggPSBHUGFjay5oYm94IH5wYWNraW5n ICgpIGluCiAgbGV0IF8gPSBib3gjYWRkIGVudHJ5I2NvZXJjZSBpbgogIGxldCBidXR0b24gPSBH QnV0dG9uLmJ1dHRvbiB+c3RvY2s6YEpVTVBfVE8gfnBhY2tpbmc6Ym94I3BhY2sgKCkgaW4KICBi dXR0b24jY29ubmVjdCNjbGlja2VkCiAgICAoZnVuICgpIC0+IHByZXJyX2VuZGxpbmUgZW50cnkj dGV4dCkgOwogICgpCiAgCmxldCBtYWtlX3NpbXBsZV9lbnRyeSAoKSA9CiAgbGV0IGVudHJ5ID0g R0VkaXQuZW50cnkgfndpZHRoOjYwMCAoKSBpbgogIGxldCBjID0gR0VkaXQuZW50cnlfY29tcGxl dGlvbiAoKSBpbgogIGVudHJ5I3NldF9jb21wbGV0aW9uIGM7CgogIGxldCAobW9kZWwsIGNvbCwg aWNvbl9jKSA9IAogICAgbW9kZWxfb2ZfbGlzdCBHb2JqZWN0LkRhdGEuc3RyaW5nIHN0cmluZ19j b21wbGV0aW9uX2xpc3QgaW4KICBjI3NldF90ZXh0X2NvbHVtbiBjb2wgOwogIGxldCByZW5kZXJl ciA9IAogICAgR1RyZWUuY2VsbF9yZW5kZXJlcl9waXhidWYgWyBgU1RPQ0tfU0laRSBgQlVUVE9O IF0gaW4KICBjI3BhY2sgKHJlbmRlcmVyIDo+IEdUcmVlLmNlbGxfcmVuZGVyZXIpOwogIGMjYWRk X2F0dHJpYnV0ZSAocmVuZGVyZXIgOj4gR1RyZWUuY2VsbF9yZW5kZXJlcikgInN0b2NrX2lkIiBp Y29uX2M7CgoKICBlbnRyeSNjb25uZWN0I2NoYW5nZWQgKGZ1biAoKSAtPiAKICAgIGxldCBzID0g ZW50cnkjdGV4dCBpbgogICAgcHJpbnRfc3RyaW5nICgiY2hhbmdlZDogIiBeIHMgXiAiXG4iKTsg Zmx1c2ggc3Rkb3V0OwogICAgbGV0IChtb2RlbCwgX2NvbCwgX2ljb25fYykgPSAKICAgICAgbW9k ZWxfb2ZfbGlzdCBHb2JqZWN0LkRhdGEuc3RyaW5nIHN0cmluZ19jb21wbGV0aW9uX2xpc3QgaW4K ICAgIGMjc2V0X21vZGVsIChtb2RlbCA6PiBHVHJlZS5tb2RlbCk7CiAgKTsKICBlbnRyeQoKbGV0 IG1haW4gKCkgPSAKICBsZXQgdyA9IEdXaW5kb3cud2luZG93IH50aXRsZToiR3RrRW50cnlDb21w bGV0aW9uIGRlbW8iICgpIGluCiAgdyNjb25uZWN0I2Rlc3Ryb3kgR01haW4ucXVpdCA7CiAgYmVn aW4KICAgIGxldCBib3ggPSBHUGFjay52Ym94IH5wYWNraW5nOncjYWRkICgpIGluCiAgICBzZXR1 cCBib3gjcGFjayAobWFrZV9zaW1wbGVfZW50cnkgKCkpIDsKICBlbmQgOwogIHcjc2hvdyAoKSA7 CiAgR01haW4ubWFpbiAoKQoKbGV0IF8gPSBtYWluICgpCgoK --0016367fabb13431e4048f65fcef Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Lablgtk mailing list Lablgtk@yquem.inria.fr http://yquem.inria.fr/cgi-bin/mailman/listinfo/lablgtk --0016367fabb13431e4048f65fcef--