On May 26, 11:19 am, bullockbefriending bard <[EMAIL PROTECTED]> wrote: > I've done all the requisite profiling and thought fairly deeply about > the efficiency of my python code, but am still going to have to speed > up the innermost guts of what I am doing. > > Essentially, I need to pass a list of 6-tuples containing only > integers to my new sadly necessary super-fast compiled language > function which i am not looking forward to writing: > > input: [(1,2,3,4,5,6), (7,8,9,10,11,12),...] > > and after much thrashing of processor resources, return data which > looks like this to the Python calling environment: > > output: [( (1, 2), (1,), (12,), (13), (1, 7, 11), (9,) ), ( another > nested tuple like preceding one ), .... ] > > Each member of the returned list is a tuple containing 6 tuples, and > each of those 6 tuples has at least one integer member. It would also > be acceptable for the return values to be entirely nested lists > instead of having the two innermost sequence types as tuples. > > I probably want to be using something like C++ because i'm going to > need to use STL vectors and sets for what i'm doing in the algorithm > i'm trying to speed up. IIRC Boost tuple is a bit painful for more > than 10 elements + isn't really essential that I use a a non-mutable > data type in what will be a small encapsulated bit of a much larger > system. > > Anyway, I can probably very quickly figure out some hacked way to get > the data into my function given that in the worst case I could take > advantage of the knowledge that each input tuple always has 6 > elements, and simply pass in a big array of ints. Yes, I know this is > a bit retarded, but I'm talking worst case assuming on very tight > schedule and no time to delve deeply into SWIG or whatever. Similarly > it wouldn't be too difficult to return the result as the mother all of > all strings which i could then parse fairly easily. > > However, I hope someone reading this will be able to tell me that I'm > being a total pessimist and that in fact it isn't very difficult to do > what I want to do using SWIG. I'm not asking for a complete solution, > more like some general pointers from someone who has actually done > something similar before. > > As an added bonus, I wouldn't if this is 'easily' doable using Ocaml > as the guts instead of C++, I'd be happy to know about it.
A just too obvious recommendation is to drop C++ and use D together with the Pyd/celerid bridge. Yeah, it sounds a little esoteric but D is really the Python among the statically typed imperative languages. http://www.digitalmars.com/d/ http://pyd.dsource.org/index.html -- http://mail.python.org/mailman/listinfo/python-list