Voor een school project heb ik samen met wat medestudenten een physics engine geschreven voor een billiards spel. Nu die fase is afgerond, moeten we een AI gaan schrijven voor datzelfde spel. Om efficient veel schoten te kunnen voorspellen, heb ik toen besloten multi-threading te implementeren zodat de CPU optimaal benut wordt.
Dit is me volgens mij ook gelukt. Ik zie in ieder geval geen fouten in mijn implementatie en de resultaten lijken te kloppen. Er is echter iets wat ik niet begrijp, en dat heeft te maken met volgende resultaten:
Het maakt niet uit hoe vaak ik de benchmark draai, er komt altijd een soortgelijk resultaat uit. Het multi-threading draait ca. 230% sneller.
Niks geks zou je zeggen, ware het niet dat ik een dual-core processor heb. Theoretisch gezien zou het maximaal haalbare toch 200% min een beetje overhead moeten zijn, of zie ik iets over het hoofd? Het lijkt wel alsof multi-threading inmiddels ook op single-core systemen voordeliger is als single-threading...
Is dit een mogelijk resultaat of zit er hoogstwaarschijnlijk een fout in mijn implementatie en kan ik nog even lekker gaan debuggen?
Systeem specificaties: HP laptop, 2GB mem, Core 2 Duo T5780(2.0Ghz), Ubuntu 10.04 beta, Netbeans als IDE.
Dit is me volgens mij ook gelukt. Ik zie in ieder geval geen fouten in mijn implementatie en de resultaten lijken te kloppen. Er is echter iets wat ik niet begrijp, en dat heeft te maken met volgende resultaten:
code:
1
2
3
4
5
6
7
8
9
| Benchmarking 10.000 cases Multi-threaded run Running time: 37770ms Average per case: 3.777ms Single-threaded run Running time: 89612ms Average per case: 8.9612ms |
Het maakt niet uit hoe vaak ik de benchmark draai, er komt altijd een soortgelijk resultaat uit. Het multi-threading draait ca. 230% sneller.
Niks geks zou je zeggen, ware het niet dat ik een dual-core processor heb. Theoretisch gezien zou het maximaal haalbare toch 200% min een beetje overhead moeten zijn, of zie ik iets over het hoofd? Het lijkt wel alsof multi-threading inmiddels ook op single-core systemen voordeliger is als single-threading...
Is dit een mogelijk resultaat of zit er hoogstwaarschijnlijk een fout in mijn implementatie en kan ik nog even lekker gaan debuggen?
Systeem specificaties: HP laptop, 2GB mem, Core 2 Duo T5780(2.0Ghz), Ubuntu 10.04 beta, Netbeans als IDE.