Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
August 08, 2013 [Issue 10779] New: cartesianProduct leads to heavy code bloat | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=10779 Summary: cartesianProduct leads to heavy code bloat Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nobody@puremagic.com ReportedBy: tobias@pankrath.net --- Comment #0 from Tobias Pankrath <tobias@pankrath.net> 2013-08-08 07:53:48 PDT --- http://dpaste.dzfl.pl/45240ef6 The program compiled with DMD64 D Compiler v2.063.2 has a size of 37MiB. It drops to 1,5MiB if you delete the usage of cartesianProduct. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 08, 2013 [Issue 10779] cartesianProduct leads to heavy code bloat | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tobias Pankrath | http://d.puremagic.com/issues/show_bug.cgi?id=10779 bearophile_hugs@eml.cc changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bearophile_hugs@eml.cc --- Comment #1 from bearophile_hugs@eml.cc 2013-08-08 08:13:44 PDT --- (In reply to comment #0) > http://dpaste.dzfl.pl/45240ef6 > > The program compiled with DMD64 D Compiler v2.063.2 has a size of 37MiB. It drops to 1,5MiB if you delete the usage of cartesianProduct. The code on dpaste: import std.conv, std.algorithm, std.range, std.stdio, std.string, std.file, std.csv; import std.getopt, std.path, std.bitmanip, std.exception; Parameter[] macParameter; Parameter[] registerParameter; Parameter[] immediateParameter; struct AsmTemplate { string template_; string result; string arguments; } struct Parameter { enum Type { Register, Immediate, Mac, None}; Type type; uint val; } struct Test { string template_; Parameter[] params; } void generateTests(OR)(AsmTemplate ins, ref OR sink) { // params is a list of argument ranges with varying length, originally // optained through a functioncall. We pad it, // with some empty elements so we can use it in cartProd auto params = [immediateParameter, registerParameter, macParameter, [], []]; foreach(tup; cartesianProduct(params[0], params[1], params[2], params[3], params[4])) { auto t = Test(ins.template_, [tup[0], tup[1], tup[2], tup[3], tup[4]]); } } void main() { auto app = appender!(Test[]); AsmTemplate asm_; asm_.generateTests(app); } Probably cartesianProduct should be rewritten from scratch, in a lower level way. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 10, 2013 [Issue 10779] cartesianProduct leads to heavy code bloat | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tobias Pankrath | http://d.puremagic.com/issues/show_bug.cgi?id=10779 --- Comment #2 from hsteoh@quickfur.ath.cx 2013-08-10 09:40:38 PDT --- You are right, cartesianProduct uses a lot of templates internally. It's worse with cartesianProduct of >2 arguments, it uses an exponential number of templates. I'll have to rewrite it from scratch to not use existing range templates. :-( So much for dogfooding... -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 10, 2013 [Issue 10779] cartesianProduct leads to heavy code bloat | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tobias Pankrath | http://d.puremagic.com/issues/show_bug.cgi?id=10779 --- Comment #3 from hsteoh@quickfur.ath.cx 2013-08-10 13:30:04 PDT --- Related: #10693 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 10, 2013 [Issue 10779] cartesianProduct leads to heavy code bloat | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tobias Pankrath | http://d.puremagic.com/issues/show_bug.cgi?id=10779 --- Comment #4 from hsteoh@quickfur.ath.cx 2013-08-10 13:30:42 PDT --- Sigh, let's see if we can get the link: issue #10693 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation