Javascript/Node en Python worden behoorlijk vaak met elkaar vergeleken. Bij de Proof of Concept van Javascript maakte ik gebruik van een omgeschreven C/C++ library die tevens beschikbaar was voor Python. De overstap om een Python test te doen was daarmee ook niet groot. Ik koos hierbij voor Python boven de C/C++ omdat
- Python een grotere community heeft.
- de array-manipulaties in de numpy-module geoptimaliseerd zijn voor snelheid. (de video frames zijn nd-arrays)
- Python makkelijker te debuggen is.
- de Python versie van opencv makkelijker te leren is (gezien ik met beide talen nog geen ervaring had vond ik dit punt zelf toch een belangrijk punt).
Mijn gedachtegang om bij opencv te blijven was dat de code in Javascript waarmee het beeld gedraaid werd te zwaar was voor de CPU. Omdat Python efficiënter is met CPU-intensieve processen leek het mij daardoor een goed idee om te kijken of dit daadwerkelijk het verschil zou maken. Daarbij ondersteund Python ook multithreading waardoor de code sneller uitgevoerd kan worden. Na deze test bleek dat mijn vermoeden terecht was. Waar in Javascript de vertraging begon en het beeld vastliep bleef de Python variant nog stabieler en minder vertraagd. Zodra de teken-functionaliteit (puur gebruikt voor debug doeleinden) eruit is, werkt het zonder probleem.
Omdat dit proces moet werken tijdens de streaming/tonen van content heb ik het gelijktijdig getest met het afspelen van een video. Deze twee programma’s konden tegelijkertijd draaien zonder prestatie verlies. Voor nu lijkt Python de beste keuze om data te verkrijgen van de gebruiker.
Node wordt echter nog altijd aangeraden voor het contact tussen de backend en het device dat de content streamt. Dit omdat Node betere performance heeft voor client en server web development en real-time applicaties. Onder dit contact wordt de content stream verstaan en de uitslag van de A/B-test. Een ontwerp van deze opstelling ziet er als volgt uit.
Bibliografie
alsalem, s. (2018). opencv python vs c++. Retrieved from Youtube: https://www.youtube.com/watch?v=03Zxjf7oWYg
Comparing Python to Other Languages. (2018). Retrieved from python: https://www.python.org/doc/essays/comparisons/
Netguru. (2018). Node.js vs Python Comparison: Which Solution to Choose for Your Next Project? Retrieved from Netguru: https://www.netguru.com/blog/node.js-vs-python-comparison-which-solution-to-choose-for-your-next-project
Python vs C vs C++. (2018). Retrieved from Stackshare: https://stackshare.io/stackups/c-vs-python
Python vs C++. (2018). Retrieved from Educba: https://www.educba.com/python-vs-c-plus-plus/
PYTHON VS NODE.JS: WHICH IS BETTER FOR YOUR PROJECT. (2018). Retrieved from Da14: https://da-14.com/blog/python-vs-nodejs-which-better-your-project
Rohner, T. (2018). Python Vs. C++ for Machine Learning – Language Comparison. Retrieved from Netguru: https://www.netguru.com/blog/python-vs.-c-for-machine-learning-language-comparison