Jeno
October 20, 2018, 3:17pm
#1
Dears
This is a general question on Juila.
“…Julia uses multiple dispatch as a paradigm…”
Please let me know the meaning of multiple dispatch in this context.
I’m a C++ guy. Having said that Julia is designed for high performance, how do you compare Julia with C++.
Thanks,
Jeno
1 Like
This stackoverflow post deals with your question directly. The wikipedia page is also useful. However, in this context a key difference between Julia and C++ is that while emulation of multiple dispatch in C++ involves some kind of virtual function/runtime dispatch, in Julia the dispatch is generally handled at compile time. In such cases, Julia will be more performant than C++ would be with a similar programming paradigm.
However, if you write more conventional C++, then Julia’s and C++'s performance should be quite similar. There are cases where limitations in one give an advantage to the other, but for many tasks they are pretty equivalent.
4 Likes
tkoolen
October 20, 2018, 4:32pm
#3
I think Julia’s multiple dispatch is more similar to overloaded non-member functions in C++, rather than virtual methods defined in a class or struct.
7 Likes
barche
October 21, 2018, 12:10pm
#4
There is a bit of a comparison here in the material Keno and I presented at C++Now 2018:
%PDF-1.3
%Äåòåë§ó ÐÄÆ
4 0 obj
<< /Length 5 0 R /Filter /FlateDecode >>
stream
xÕYMo7½óWÌqÔk.÷S½ÑR @`949$ª]¥ÒZNÑ¿ß7Ã!wWZI´dÔ)Øc~¸oß<>RôÈR=¯iCMë:¯5¾ªZkkZcHWqü;úbÓUdYGV¦ðïñèëÇTÈÏãLàlïèÞËÖSTunkÛQU7yÙÖfCm[çm°&m(º&ï²DK5h[õ}.~ä¢j¨ªZt$ZKTÎù¹×G äyááñÌÆþ\ϱ4FAâ.r×ñrmCË
½^*î÷¿º^,¾Å=ýJÙbfl^Q¶ü½ã¿e4£+;ÊÞ̨Ì;Êþ²õgÒÒÆ®?Îf¡éôýòÄùqºª ÷>RG>Ëo»«ºá¤%é±~hñ~\#ãbRpñxÀŤâÂhÂE±;ËÝ#¸p²]\ήU'î¸6ÀàsjÃpUÇÑÚ@®PeWῲ´ÄÑÚG
|m _6¨
pÝ×Ímã´84ÕQÖ`5ªÄ3XYk³X/¸zÅÕñÿ«ÿnïgT Yÿ]~¥
WZ¶ÛÏÌfDüVeDÒùa +UÎêJé¢ñJe})+äÞ¦×ý(ðµ~âù\çjë?nm5®uÄÑ$ªI¬§N"Ï)¼{*\íçíá´Vq)¾úeFÐ?ñ;o)û5íZÑS'âË
ÆBÄ
Üé@[Ø$;úع"QÆ{ûIv ×;À8ëèΫì¨\ÉêRDØy9²5RI¯¸eäÎÎÔ¥¨¡ç²¯rPóܲ¸º¢¤Q)§KÕù8ûoñß¶&ĺÆâCϹvPQOP
a1K Ê#MzÀ8ÒËzÍp[ï*XD<Qa±(¨2GhCYÆø[ÚÒí
,÷1Tï4Q<¥ì\Î^Jd·°¢ï$¦ÿíçIéá-oLʸ٠)'Í T*Âþm¬c[uçý¤b-7~Rë%6jõ(#J-ÃPx&?çn;®ÔWaÎ¥7^ë½[ÁϧÐÛ¨`©zWÞ>H¯Ò»É4
¤fþuÞÔJt¡7bã!Þ=¥}ú½M*¦©j)ÁíaÇHÃTiÚ#µ)RÆt°#ÓÎÞÀ%/ä*»Erq¶òqç&£÷Ù ÍźNê$ß`"àu êAKì*!eåX;Ys%*Jo ¥W*b³mõU"%e ç*Ö[pÞk.? ¹ÌsOD~@ÊiÍÅ&`vÌ@®BÇ£Å7TèS©)±ÿÈ1c-îpêýx¯¹Q,¿jBPcÀÑÞ(±ß«e¼lÙCÆ ³,Ç,ñü
þI&d>@¥;Êý&tá°,kzsø`¡û¹¤È\VI`B_I\\¬ÇJòBÏHêGzµú2¯¨T´áóÁW"©¤¾¦md$ïlyz_IóKܨH¸»\LJ%õH ªN;ÊÂúÜ䱬$àWE¨¤}÷büUV0ÒïggúÀ¦R¾¡Q`ÈS{ÅsRq¤PQF3ÁêHE<.o¤ýëP*¨î¢ÎS9館cwñBÎW®Ï ê±F/u 2åÓÝLEÆuà2 âÁ#/ê¯U§ýM&.|¶Q£ÆÅ*ÄÝè5*ÆDÏrõУ¯¿çÜ\óLï$Üu_¾ÑÖáÄmêÒÛ5I$<^Ü8R¤3°ße«+{Ưb$J.Iä6¸ÌI'y=ç꺢
¹lMÈÅÐ#©.í$ÏKîDBøÊßßlM:êí½ÄQ¿øÖÎ_þÀ«C6½øJäIɽ*¾ýH^©yé}D"¾JO@Z!eøöDôé'Iùí/Rñ=©bÐOòµkòyô â
oÔÜ|[úSðØý6¡FÜð÷qzrTðõ+Ó#'+áü³ö <á¸äyðØmDR[Ò«µÕä¥bò-ÔV_e«ÁHÌK«-
'ýÕµuS©1¦'¿µUÞ$V³Çþa
endstream
endobj
5 0 obj
1710
endobj
2 0 obj
<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 841.89 595.29]
>>
endobj
6 0 obj
<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /TT2 9 0 R
/TT1 8 0 R >> >>
This file has been truncated. show original
The original notebook is here
Also, there’s a video of the talk:
7 Likes