I was doing some more work on my neural net module when I decided to try to compare the performance with AI::NeuralNet::BackProp, a pure Perl neural network. I discovered right off the bat that I can't compare them directly because of differences in how one can create a network, but I felt that I managed a close enough comparison that I could get a rough feel for the performance characteristics.
My network has the core written in C. For one set of data, I have 27 pairs of array references, each with four elements. In the C version, I iterate over these 27 pairs a total of thirty thousand times. It takes about 10 seconds. In the pure Perl version, running that data through the network just once takes about 600 seconds. Admittedly, I'm doing a lot of floating point math and storing this data in arrays, so I know that I should get a significant boost, but this seems ridiculous.
I know it's not a fair comparison. The network architectures are slightly different (the one for Perl actually favored it since I had fewer nodes) and the internals are different, but comparing 30,000 iterations in 10 seconds to one iteration in 600 seconds just blows me away. It's been a long time since I've dabbled in C, but I'm astonished to see that much of a speedup. Is this typical?
Disclaimer: my neural network is a heavily modified version of the code found in AI Application Programming by M. Tim Jones. I don't claim to be so smart as to have been able to write one myself. Go out and buy the book. If you're interested in AI and you know C, it's worth the money.