As mentioned in my previous blog post, I was experimenting with Google's Go language.
Admittedly, I'm a Google fanboy and I was very eager to use Go. However, my eagerness was quickly tempered when I realized Go performs poorly in regex. At first I was doubting my self and my skills, but a quick question to the good people at Go's group golang-nuts reveals that this is a known performance issue.
Bad luck, as I need to run through thousands upon thousands of regex per second.
But some good luck fell my way as my engineer, Joey, pointed me to Python's multiprocessing module which allows me to create worker processes not limited by the Global Interpreter Lock (as compared to the multi-threading module).
So, I just re-coded my previous code using Python multiprocessing, added another worker to fetch from our RabbitMQ messaging platform and voila! a stable and running program!
So far, this is what it does to a 16 core supermicro server... just the way I want it.
No comments:
Post a Comment