Ik ben op dit moment mijn grafische rekenmachine aan het herschrijven. Nu ik de parser af heb, ben ik weer begonnen aan het plot-gedeelte. Aangezien ik vaak met meerdere (wiskundige)functies werk, kan ik dit prima multithreaded doen, dit zou als het goed is voor een aardige performance winst kunnen zorgen. Nu is de vraag alleen, wat is de meeste efficiente manier?
Het idee is dat ik een object/thread maak per functie. Nu is een voor de hand liggende aanpak om dit object een bitmap-object te laten vullen met een transparente achtergrond, om deze vervolgens te returnen naar de hoofdthread, die dan alle bitmaps over elkaar heen plakt. Ik weet echter uit ervaring dat juist dit overelkaar heen plakken veel resources vergt.
Een andere optie is om de threads de tekencoordinaten door te laten geven naar de hoofdthread. Dit zou per lijnstuk kunnen (500+ per functie) of in zijn geheel achteraf. Als ik ze een voor een doorgeef vraag ik me af of het firen van al die events niet ontzettend veel performance opeist. Als ik ze achteraf in een hap doorgeeft, vraag ik me af of er nog een performancewinst is aangezien de hoofdthread nu alsnog nog een keer door al die coordinaten heen moet gaan loopen.
Ik heb eigenlijk geen flauw idee welke aanpak het snelste is. Misschien dat een tweaker al eens met een soortgelijk probleem gekampt heeft en de oplossing kent? Of zal ik toch echt alledrie de versies moeten schrijven en benchmarken?
Het idee is dat ik een object/thread maak per functie. Nu is een voor de hand liggende aanpak om dit object een bitmap-object te laten vullen met een transparente achtergrond, om deze vervolgens te returnen naar de hoofdthread, die dan alle bitmaps over elkaar heen plakt. Ik weet echter uit ervaring dat juist dit overelkaar heen plakken veel resources vergt.
Een andere optie is om de threads de tekencoordinaten door te laten geven naar de hoofdthread. Dit zou per lijnstuk kunnen (500+ per functie) of in zijn geheel achteraf. Als ik ze een voor een doorgeef vraag ik me af of het firen van al die events niet ontzettend veel performance opeist. Als ik ze achteraf in een hap doorgeeft, vraag ik me af of er nog een performancewinst is aangezien de hoofdthread nu alsnog nog een keer door al die coordinaten heen moet gaan loopen.
Ik heb eigenlijk geen flauw idee welke aanpak het snelste is. Misschien dat een tweaker al eens met een soortgelijk probleem gekampt heeft en de oplossing kent? Of zal ik toch echt alledrie de versies moeten schrijven en benchmarken?
