A couple small things that will help improve memory management Rather than avg = sumall / count; return avg; Just return sumall/count instead. Then you don't have to waste a register or assignment operation.
Division is expensive. Avoid it when you can. Here, for (a=0; a != count; a++) { temp = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(seq,a)); sumall += temp; Again, save variables and operations. Write this as: for (a=0; a != count; a++) { sumall += PyFloat_AsDouble(PySequence_Fast_GET_ITEM(seq,a)); Similar corrections in var() It's cheaper when you're using powers of two to just right or left-shift: >> or <<. Since you want to increase by a power of two, do: (avg - PyFloat_AsDouble(PySequence_Fast_GET_ITEM(seq,a) << 1; // This means (...)^(2^1) Division by powers of two is >>. Note that these only works for powers of two. Now I haven't worked with pointers in a long time and didn't fully trace this out so I'm probably wrong, but it doesn't seem like you ever have your pointers in stat_avg() point to an object. Therefore wouldn't they always be Null? R.M. ArceJaeger Author/Publisher, Platypus Press Contact: arcejae...@gmail.com Website: http://rmarcejaeger.com On May 26, 2011, at 8:22 AM, James Reynolds wrote: > Hello All: > > As an intellectual exercise, I wanted to try my hand at writing some > extensions in C. > > I was wondering if you all could look over my code and give some feedback. > > Here is the link for the code: http://pastebin.com/jw3ihfsN > > I have zero experience coding in C (and not much more coding in Python!). > Being a kinetic learner, I thought this would be a good exercise to teach me > some of the underpinnings of Python, how it works, why it works the way it > does, and as an added bonus, skills to actually write my own extensions if I > ever wanted to. > > I had to learn about pointers to do this, and I'm still not 100% on if I used > them correctly herein. > > I am also very concerned with memory management because I am not sure when I > should be calling the memory allocation macros to decref or incref when > needed. > > I would also like to get feedback on how I am constructing C algorithms. > > As far as the module itself goes, I was able to compile and use it on a > windows machine compiling with mingw (I use distutils to do the work, so for > me I do "python setup.py build" in my CMD. > > There are three functions, stats.mean, stats.var, stats.stdev (and they do > what you would expect). One thing though, these are the "population" > statistics and not "sample" in case you want to test it out. > > Also, anything else that you think would be worthwile pointing out, tips and > tricks, common pitfalls, etc. > > Thanks in advance for you feedback. > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor