{"id":10235,"date":"2018-08-14T01:00:00","date_gmt":"2018-08-13T17:00:00","guid":{"rendered":"http:\/\/swarma.org\/?p=10235"},"modified":"2018-12-05T17:04:10","modified_gmt":"2018-12-05T09:04:10","slug":"%e6%94%be%e5%bc%83julia%ef%bc%9f%e9%95%bf%e6%96%87%e8%a7%a3%e6%9e%90%e5%af%b9julia%e7%9a%84%e8%b4%a8%e7%96%91%e9%94%99%e5%9c%a8%e5%93%aa%e9%87%8c","status":"publish","type":"post","link":"https:\/\/swarma.org\/?p=10235","title":{"rendered":"\u653e\u5f03Julia\uff1f\u957f\u6587\u89e3\u6790\u5bf9Julia\u7684\u8d28\u7591\u9519\u5728\u54ea\u91cc"},"content":{"rendered":"<div class=\"bpp-post-content\">\n<p style=\"white-space: normal; text-align: center;\"><img class=\"\" style=\"width: 558.4px;\" title=\"\u96c6\u667a\" src=\"http:\/\/swarma.org\/wp-content\/uploads\/2018\/08\/swarma4-1534261655.jpg\" alt=\"\u96c6\u667a\" \/><\/p>\n<section class=\"mpa-template\">\n<p style=\"margin-top: 5px; margin-bottom: 5px; margin-left: 1em; clear: both; min-height: 1em; font-size: 16px; color: #ec8921; line-height: 1.4; border-color: #ec8921; overflow-wrap: break-word !important;\"><span style=\"border-color: #ec8921; color: #ffffff; font-size: 15px; overflow-wrap: break-word !important;\"><strong style=\"border-color: #ec8921; overflow-wrap: break-word !important;\"><span style=\"padding: 0.2em 0.5em; border-color: #ec8921; font-weight: inherit; text-decoration: inherit; border-radius: 0.3em; text-align: center; background-color: #ec8921; overflow-wrap: break-word !important;\">\u524d\u8a00<\/span><\/strong><\/span><\/p>\n<section style=\"margin-top: -0.7em; color: #3e3e3e; border-radius: 0.4em; overflow-wrap: break-word !important; border: 1px solid #ec8921;\">\n<section style=\"padding: 1.4em 1em 1em; border-color: #ec8921; overflow-wrap: break-word !important;\">\n<section style=\"font-weight: inherit; text-align: inherit; text-decoration: inherit; border-color: #ec8921; overflow-wrap: break-word !important;\">\n<p style=\"margin-top: 5px; margin-bottom: 5px; clear: both; min-height: 1em;\"><span style=\"font-size: 15px;\">Julia \u8bed\u8a001.0\u7248\u672c\u8fd1\u671f\u521a\u521a\u6b63\u5f0f\u4e0a\u7ebf\uff0c\u4f5c\u4e3a\u79d1\u5b66\u548c\u6570\u503c\u8ba1\u7b97\u7684\u795e\u5668\uff0cJulia\u5f15\u8d77\u4e86\u4e1a\u5185\u5e7f\u6cdb\u5173\u6ce8\u3002Julia \u8bed\u8a00\u4ee5\u901f\u5ea6\u8457\u79f0\uff0c\u4f46\u57281.0\u7248\u672c\u4e0a\u7ebf\u4e4b\u524d\u5176\u6027\u80fd\u4e5f\u66fe\u53d7\u5230\u8bf8\u591a\u8d28\u7591\uff0c\u672c\u6587\u662f\u5f00\u53d1\u8005Tom Kwong\u5bf9\u8d28\u7591\u58f0\u97f3\u7684\u56de\u5e94\u2014\u2014\u4e3a\u4ec0\u4e48\u201c\u653e\u5f03Julia\u201d\u7684\u6279\u8bc4\u662f\u8f7b\u7387\u7684\u3002\u672c\u6587\u4f7f\u7528Julia0.6\u7248\u672c\u3002<\/span><\/p>\n<\/section>\n<\/section>\n<\/section>\n<p class=\"ql-long-5633269\" style=\"clear: both; min-height: 1em; color: #000000; font-size: medium;\">\n<\/section>\n<section class=\"mpa-template\" style=\"white-space: normal;\">\n<blockquote style=\"color: #333333; font-size: 17px; letter-spacing: 0.544px; text-align: justify;\">\n<p style=\"margin-top: 5px; margin-bottom: 5px; text-align: left; color: #000000; letter-spacing: 0px; font-size: 15px; line-height: 1.5em;\"><span style=\"color: #888888; letter-spacing: 1px;\">\u7f16\u8bd1\uff1a\u96c6\u667a\u7ffb\u8bd1\u7ec4<br \/>\n<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"letter-spacing: 1px; color: #888888; font-size: 15px;\">\u6765\u6e90\uff1a<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"letter-spacing: 1px; color: #888888; font-size: 15px;\">tk3369.wordpress.com<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"color: #888888; letter-spacing: 0.544px; font-size: 15px;\">\u539f\u9898\uff1a<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px; color: #888888;\">An Updated Analysis for the \u201cGiving Up on Julia\u201d Blog Post<\/span><\/p>\n<\/blockquote>\n<\/section>\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section class=\"mpa-template\">\n<section class=\"\">\n<section style=\"margin-top: 20px; display: flex; -webkit-box-pack: center; justify-content: center; -webkit-box-align: center; align-items: center;\">\n<section style=\"padding-right: 30px; padding-left: 30px; min-width: 60px; text-align: center; border-bottom: 2px solid #e8e6e6;\">\n<section style=\"padding-right: 10px; padding-left: 10px; display: inline-block; font-size: 14px; color: #ff8000; border-bottom: 2px solid #ff8000; transform: translate(0px, 2px); border-top-color: #ff8000; border-left-color: #ff8000; border-right-color: #ff8000;\"><strong style=\"color: #7b0c00;\"><span class=\"\" style=\"color: #ec8921;\"><strong><span style=\"font-size: 16px;\">\u80cc\u666f<\/span><\/strong><\/span><\/strong><\/section>\n<\/section>\n<p><strong style=\"color: #7b0c00;\">\u00a0<\/strong><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<section><strong>\u00a0<\/strong><\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">2016\u5e743\u6708\u7684\u4e00\u7bc7\u535a\u5ba2\uff0c<\/span><span style=\"font-size: 15px;\">\u5927\u8086\u5410\u69fd\u4e86\u4e00\u4e0bJulia\u8bed\u8a00\u3002\u4ece\u8fd9\u7bc7\u535a\u5ba2\u7684\u8bc4\u8bba\u548c\u6700\u8fd1\u793e\u533a\u4e0a\u5bf9Julia\u8bed\u8a00\u7684\u8ba8\u8bba\u4e0a\u6765\u770b\uff0c \u90a3\u7bc7\u535a\u5ba2\u786e\u5b9e\u662f\u6709\u70b9\u4e89\u8bae\u7684\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<blockquote style=\"white-space: normal;\">\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px; color: #888888;\">\u535a\u5ba2\u5730\u5740\uff1a<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px; color: #888888;\">http:\/\/zverovich.net\/2016\/05\/13\/giving-up-on-julia.html\u00a0<\/span><\/p>\n<\/blockquote>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\">\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u90a3\u4e48\u8fd9\u7bc7\u535a\u5ba2\u7684\u76ee\u7684\u5c31\u662f\u6765\u53cd\u9a73\u4e00\u4e0b\u90a3\u4e9b\u9519\u8bef\u7684\u89c2\u70b9\uff0c\u7136\u540e\u786e\u5b9a\u4e00\u4e0b\u4ec0\u4e48\u624d\u662f\u6211\u4eec\u9700\u8981\u771f\u6b63\u53bb\u5173\u6ce8\u7684\u3002\u6211\u4f1a\u5c3d\u91cf\u516c\u5e73\u5730\u5217\u4e3e\u4e0d\u540c\u4e4b\u5904\uff0c\u8fd9\u6837\u4f60\u4eec\u5c31\u53ef\u4ee5\u6839\u636e\u4f8b\u5b50\u6765\u5177\u4f53\u5224\u65ad\u3002<\/span><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\">\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4e0b\u9762\u6240\u6709\u7684\u8868\u73b0\u90fd\u57fa\u4e8e\u6211\u7684Macbook Pro\u7b14\u8bb0\u672c(Intel i5-4258U CPU@2.40 GHz)\u4ee5\u53caJulia 0.6.2\u548cAnaconda\u53d1\u884c\u7248\u7684Python 3.6.3\u3002<\/span><\/p>\n<p style=\"white-space: normal;\">\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section class=\"mpa-template\">\n<section class=\"\">\n<section style=\"margin-top: 20px; display: flex; -webkit-box-pack: center; justify-content: center; -webkit-box-align: center; align-items: center;\">\n<section style=\"padding-right: 30px; padding-left: 30px; min-width: 60px; text-align: center; border-bottom: 2px solid #e8e6e6;\">\n<section style=\"padding-right: 10px; padding-left: 10px; display: inline-block; font-size: 14px; color: #ff8000; border-bottom: 2px solid #ff8000; transform: translate(0px, 2px); border-top-color: #ff8000; border-left-color: #ff8000; border-right-color: #ff8000;\"><strong style=\"color: #7b0c00;\"><span class=\"\" style=\"color: #ec8921;\"><strong><span style=\"font-size: 16px;\">\u5173\u4e8eJulia\u5e95\u5c42\u6027\u80fd\u6d4b\u8bd5\u7684\u62b1\u6028<\/span><\/strong><\/span><\/strong><\/section>\n<\/section>\n<p><strong style=\"color: #7b0c00;\">\u00a0<\/strong><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4f5c\u8005\u5f15\u7528\u4e86\u51e0\u4e2a\u5173\u4e8e\u6027\u80fd\u6d4b\u8bd5\u7684github issue\u3002<br \/>\n<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">1.parse_integer benchmark(https:\/\/github.com\/JuliaLang\/julia\/issues\/4662)\u7684C\u8bed\u8a00\u5b9e\u73b0\u4e0d\u662f\u7528\u7528\u60ef\u7528\u6807\u51c6\u7f16\u7801\u7684\uff0c\u6bd4\u5982strlen\u51fd\u6570\u30022013\u5e7410\u6708\u65f6\u6838\u5fc3\u5f00\u53d1\u56e2\u961f\u627f\u8ba4\u4e86\u8fd9\u4e2a\u95ee\u9898\u5e76\u5f88\u5feb\u7684\u5bf9\u5176\u8fdb\u884c\u4e86\u4fee\u590d\uff08\u4e24\u5929\u5185\uff09\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">2.\u4e5f\u6709\u4eba\u63d0\u95ee\u4e86Java\u548cOctave\u5b9e\u73b0\u7684\u4e0d\u540c\u6027\u80fd\u6d4b\u8bd5\u7684\u95ee\u9898\u3002\u5728Github\u4e0a\u7ecf\u8fc7\u4e86\u51e0\u8f6e\u8ba8\u8bba\u4e4b\u540e\uff0c\u6700\u7ec8\u5f52\u7ed3\u4e8e\u5927\u5bb6\u5bf9\u4e8e\u6027\u80fd\u6d4b\u8bd5\u7684\u4e0d\u540c\u7406\u5ff5\u3002\u6211\u4eec\u5230\u5e95\u662f\u60f3\u8981\u901a\u8fc7\u6027\u80fd\u6d4b\u8bd5\u6765\u7406\u89e3\u5bf9\u4e8e\u76f8\u540c\u7b97\u6cd5\u7684\u4e0d\u540c\u8bed\u8a00\u95f4\u5b9e\u73b0\u7684\u6027\u80fd\u8fd8\u662f\u60f3\u77e5\u9053\u5728\u8fd9\u4e9b\u8bed\u8a00\u4e4b\u95f4\u7528\u6700\u4f18\u5316\u7684\u4ee3\u7801\u6765\u8fdb\u884c\u6bd4\u8f83\u5462\uff1fJulia\u7684\u6027\u80fd\u6d4b\u8bd5\u89e3\u91ca\u5230\uff1a<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<blockquote class=\"ql-long-3763112\" style=\"white-space: normal;\">\n<p style=\"margin-right: 8px; margin-left: 8px; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u9700\u8981\u4e3b\u8981\u5230\u7684\u662f\uff0c\u6027\u80fd\u6d4b\u8bd5\u4ee3\u7801\u5e76\u4e0d\u662f\u7528\u7edd\u5bf9\u6700\u5927\u6027\u80fd\u5199\u7684\uff08\u6700\u5feb\u9012\u5f52\u8ba1\u7b97\u6590\u6ce2\u90a3\u5951\u6570\u5217\u7b2c\u4e8c\u5341\u4e2a\u5143\u7d20\u7684\u4ee3\u7801\u662f6765\uff09\u3002\u76f8\u53cd\uff0c\u7f16\u5199\u8fd9\u4e9b\u6027\u80fd\u6d4b\u8bd5\u662f\u4e3a\u4e86\u6d4b\u8bd5\u6bcf\u79cd\u8bed\u8a00\u4e2d\u5b9e\u73b0\u76f8\u540c\u7b97\u6cd5\u548c\u4ee3\u7801\u6a21\u5f0f\u4e2d\u7684\u6027\u80fd\u3002<\/span><\/p>\n<\/blockquote>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\"><strong>\u5173\u4e8e\u4f18\u5316<\/strong><\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\"><strong>\u00a0<\/strong><\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u5728\u4efb\u610f\u53ef\u62d3\u5c55\u7684\u8bed\u8a00\u4e2d\u4eba\u4eec\u90fd\u53ef\u4ee5\u4f18\u5316\u4efb\u4f55\u4e1c\u897f\u5e76\u53d6\u5f97\u826f\u597d\u7684\u6027\u80fd\u3002\u5728Python\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u5e94\u7528Cython\uff0cNumba\uff0cNumpy\u548c\u5176\u4ed6\u7684\u6280\u5de7\u3002\u8fd9\u662fStephan Karpinski\u6240\u63cf\u8ff0\u7684\u5178\u578b\u7684\u53cc\u8bed\u8a00\u95ee\u9898\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u5373\uff1a<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">1.\u8981\u4f18\u5316\u4e00\u4e2a\u4e8b\u7269\u6709\u591a\u56f0\u96be\uff0c\u8981\u4ed8\u51fa\u591a\u5927\u7684\u52aa\u529b\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">2.\u4f18\u5316\u662f\u5426\u4f1a\u5728\u4ee3\u7801\u4e2d\u5f15\u5165\u989d\u5916\u7684\u590d\u6742\u6027\u5e76\u963b\u788d\u751f\u4ea7\u529b\u3002<\/span><\/p>\n<p style=\"white-space: normal;\">\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<p><span style=\"color: #ec8921;\">\u00a0Hello World\u7684\u6027\u80fd<\/span><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4f5c\u8005\u5bf9\u4e8e\u4e00\u4e2a\u7b80\u5355\u7684Hello World\u7a0b\u5e8f\u7684\u8fd0\u884c\u65f6\u95f4\u6709\u70b9\u4e0d\u6ee1\u3002\u5305\u542b\u542f\u52a8\u65f6\u95f4\u5f88\u660e\u663e\u662f\u5f88\u5947\u8469\u4e14\u7247\u9762\u7684\u3002<br \/>\n<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u95ee\u9898\u5c31\u662f\uff0c\u8fd9\u6709\u5173\u7cfb\u5417\uff1f\u4e5f\u8bb8\u6709\uff0c\u4e5f\u8bb8\u6ca1\u6709\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\">\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\"><span style=\"font-size: 15px;\">1.\u5982\u679c\u4f60\u6709\u4e00\u5806\u53ea\u9700\u8981\u4e00\u79d2\u949f\u5c31\u80fd\u8fd0\u884c\u7684\u77ed\u65f6\u95f4\u5e94\u7528\u7a0b\u5e8f\uff0c\u90a3\u4e48\u8f83\u957f\u7684\u542f\u52a8\u65f6\u95f4\u53ef\u80fd\u5bf9\u4f60\u4ea7\u751f\u5f88\u5927\u7684\u5f71\u54cd\u3002<\/span><\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">2.\u5982\u679c\u4f60\u6709\u4e00\u4e2a\u5927\u6982\u8981\u8017\u65f630\u5206\u949f\u7684\u5927\u578b\u8ba1\u7b97\u9879\u76ee\uff0c\u90a3\u4e480.5\u79d2\u7684\u542f\u52a8\u65f6\u95f4\u5c31\u6ca1\u4ec0\u4e48\u610f\u4e49\u4e86\u3002\u5bf9\u4e8e\u5927\u591a\u6570\u5546\u4e1a\u5e94\u7528\u7a0b\u5e8f\u6765\u8bf4\uff0c\u8fd9\u624d\u662f\u6bd4\u8f83\u5e38\u89c1\u7684\u60c5\u51b5\uff0c\u66f4\u522b\u63d0\u6570\u503c\u8fd0\u7b97\u548c\u79d1\u5b66\u8ba1\u7b97\u793e\u533a\u4e86\u3002<\/span><\/p>\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section class=\"mpa-template\">\n<section class=\"\">\n<section style=\"margin-top: 20px; display: flex; -webkit-box-pack: center; justify-content: center; -webkit-box-align: center; align-items: center;\">\n<section style=\"padding-right: 30px; padding-left: 30px; min-width: 60px; text-align: center; border-bottom: 2px solid #e8e6e6;\">\n<section style=\"padding-right: 10px; padding-left: 10px; display: inline-block; font-size: 14px; color: #ff8000; border-bottom: 2px solid #ff8000; transform: translate(0px, 2px); border-top-color: #ff8000; border-left-color: #ff8000; border-right-color: #ff8000;\"><strong style=\"color: #7b0c00;\"><strong style=\"color: #7b0c00;\"><span class=\"\" style=\"color: #ec8921;\"><strong><span style=\"font-size: 16px;\"><strong>\u535a\u5ba2<\/strong><\/span><\/strong><\/span><\/strong><\/strong><\/p>\n<p><span style=\"font-size: 16px; color: #ec8921;\"><strong>\u300a\u5982\u4f55\u8ba9Python\u8ddfJulia\u4e00\u6837\u5feb\u300b<\/strong><\/span><\/p>\n<\/section>\n<\/section>\n<p><strong style=\"color: #7b0c00;\">\u00a0<\/strong><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4f5c\u8005\u6307\u51fa\u5728\u535a\u5ba2&#8221;\u5982\u4f55\u8ba9Python\u8ddfJulia\u4e00\u6837\u5feb&#8221;\u4e2d\u6709\u5f88\u591a\u65b9\u5f0f\u53ef\u4ee5Python\u66f4\u5feb\u3002\u8fd9\u4e2a\u5f15\u7528\u611f\u89c9\u5c31\u50cf\u662f\u5728\u8bf4\u201c\u563f\uff0c\u6211\u4eecPython\u5f00\u53d1\u8005\u5df2\u7ecf\u77e5\u9053\u5982\u4f55\u8ba9\u7a0b\u5e8f\u8dd1\u7684\u66f4\u5feb\u4e86\uff0c\u800c\u4e14\u6ca1\u7528\u7406\u7531\u5207\u6362\u5230\u5176\u4ed6\u8bed\u8a00\u3002\u201d<\/span><\/p>\n<p style=\"white-space: normal;\">\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<p><span style=\"color: #ec8921;\">\u00a0\u6590\u6ce2\u90a3\u5951\u6027\u80fd\u6d4b\u8bd5<\/span><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal;\">\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6211\u7684\u6d4b\u8bd5\u7ed3\u679c\u663e\u793a\uff0cCython-Typed\u7684\u901f\u5ea6\u548cJulia\u76f8\u5f53\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u53ea\u662f\u6709\u51e0\u4e2a\u6ce8\u610f\u4e8b\u9879<\/span><\/p>\n<ul class=\"ql-long-3763112 list-paddingleft-2\" style=\"margin-left: 8px; margin-right: 8px;\">\n<li>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u535a\u5ba2\u7684\u6027\u80fd\u6d4b\u8bd5\u7ed3\u679c\u662fJulia 80us\u548cCython-Typed 24us\u3002\u6211\u4e0d\u80fd\u590d\u73b0\u8fd9\u6837\u7684\u8868\u73b0\u3002\u6211\u53ea\u80fd\u89e3\u91ca\u8bf4\uff0c\u65f6\u4ee3\u53d8\u4e86\uff0cJulia\u7684\u6027\u80fd\u4e5f\u63d0\u9ad8\u4e86\u3002<\/span><\/p>\n<\/li>\n<li>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6590\u6ce2\u90a3\u5951\u51fd\u6570\u4f7f\u7528\u4e86LRU\u7f13\u5b58\u505a\u4e86\u4f18\u5316\u3002\u4ece\u6027\u80fd\u6d4b\u8bd5\u89d2\u5ea6\u6765\u770b\uff0c\u8fd9\u4e0d\u662f\u4e00\u4e2a\u516c\u5e73\u7684\u6bd4\u8f83\uff0c\u56e0\u4e3a\u7b97\u6cd5\u672c\u8eab\u6539\u53d8\u4e86\u3002\u6240\u4ee5\u8bf4\u6211\u4eec\u53ef\u4ee5\u5ffd\u7565\u8fd9\u4e9b\u7ed3\u679c\u3002<\/span><\/p>\n<\/li>\n<li>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">NUmba\u4f7f\u7528LRU-enhanced\u7684\u8fdb\u4e00\u6b65\u4f18\u5316\u4e86\u4ee3\u7801\u3002\u51fa\u4e8e\u540c\u6837\u7684\u539f\u56e0\u8003\u8651\uff0c\u6211\u4eec\u4e5f\u5c06\u5ffd\u7565\u8fd9\u4e9b\u7ed3\u679c\u3002<\/span><\/p>\n<p><span class=\"ql-author-3763112\">\u00a0<\/span><\/li>\n<\/ul>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal;\"><strong>Python<\/strong><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">In [43]: def fib(n):<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">&#8230;: \u00a0 \u00a0 if n&lt;2:<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">&#8230;: \u00a0 \u00a0 \u00a0 \u00a0 return n<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">&#8230;: \u00a0 \u00a0 return fib(n-1)+fib(n-2)<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">In [44]: %timeit fib(20)<\/span><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"><\/pre>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">3.27 ms \u00b1 48.3 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 100 loops each)<\/span><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>\u00a0<\/strong><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Cython<\/strong><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">In [48]: %%cython<\/span><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    ...: def fib_cython(n):<\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    ...:     if n&lt;2:<\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    ...:         return n<\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    ...:     return fib_cython(n-1)+fib_cython(n-2)<\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">\nIn [51]: %timeit fib_cython(20)<\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"> 1.48 ms \u00b1 329 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 1000 loops each)<\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>\u00a0<\/strong><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Cython Typed<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">In [71]: %%cython<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0...: cpdef long fib_cython_type(long n):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0...: \u00a0 \u00a0 if n&lt;2:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0...: \u00a0 \u00a0 \u00a0 \u00a0 return n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0...: \u00a0 \u00a0 return fib_cython_type(n-1)+fib_cython_type(n-2)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"> <span style=\"font-size: 15px;\">In [72]: %timeit fib_cython_type(20)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"> <span style=\"font-size: 15px;\">47.8 \u00b5s \u00b1 182 ns per loop (mean \u00b1 std. dev. of 7 runs, 10000 loops each<\/span><\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>\u00a0<\/strong><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Julia<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">julia&gt; fib(n) = n &lt; 2 ? n : fib(n-1) + fib(n-2) \u00a0<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">fib (generic function with 1 method) \u00a0 \u00a0\n\n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">julia&gt; @btime fib(20)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> 48.075 \u03bcs (0 allocations: 0 bytes)<\/span><\/pre>\n<p style=\"white-space: normal;\">\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<p><span style=\"color: #ec8921;\">\u00a0\u5feb\u901f\u6392\u5e8f<\/span><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\">\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4f5c\u8005\u5c06\u5feb\u901f\u6392\u5e8f\u51fd\u6570\u8f6c\u5316\u4e3aCython\uff0c\u6700\u540e\u5f97\u51fa\u7ed3\u8bbaNumpy\u7684\u6392\u5e8f\u65f6\u95f4\u662f\u6700\u5feb\u7684\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">1.\u6027\u80fd\u6d4b\u8bd5\u7b97\u6cd5 &#8211; Julia(356us) vs Cython (1030) \u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">2.\u57fa\u6392\u51fd\u6570 &#8211; Julia(233us) vs Numpy(292us)\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal;\"><span class=\"ql-author-3763112\">\u00a0<\/span><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Python<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">In [83]: def qsort1(a, lo, hi):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 i = lo<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 j = hi<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 while i &lt; hi:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 pivot = a[(lo+hi) \/\/ 2]<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 while i &lt;= j:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 while a[i] &lt; pivot:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 i += 1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 while a[j] &gt; pivot:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 j -= 1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if i &lt;= j:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 a[i], a[j] = a[j], a[i]<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 i += 1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 j -= 1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 if lo &lt; j:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 qsort1(a, lo, j)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 lo = i<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 j = hi<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 return a<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> In [84]: %timeit qsort1(lst, 0, len(lst)-1)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"> <span style=\"font-size: 15px;\">13.7 ms \u00b1 140 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 100 loops each)<\/span><\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\">\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Cython<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"> <span style=\"font-size: 15px;\"> \u00a0 In [100]: %%cython<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: cdef double[:] qsort2(double[:] a, long lo, long hi):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 cdef: <\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 long i, j<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 double pivot<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 i = lo<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 j = hi<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 while i &lt; hi:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 pivot = a[(lo+hi) \/\/ 2]<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 while i &lt;= j:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 while a[i] &lt; pivot:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 i += 1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 while a[j] &gt; pivot:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 j -= 1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if i &lt;= j:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 a[i], a[j] = a[j], a[i]<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 i += 1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 j -= 1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 if lo &lt; j:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 qsort2(a, lo, j)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 lo = i<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 j = hi<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 return a<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: <\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: def qsort2_py(a, b, c):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 return qsort2(a, b, c)\n \u00a0 \u00a0 \u00a0 \u00a0 \n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> In [105]: %timeit qsort2_py(np.random.rand(5000), 0, 4999)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"> <span style=\"font-size: 15px;\">1.03 ms \u00b1 110 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 1000 loops each)<\/span><\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>\u00a0<\/strong><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Numpy<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">In [61]: %timeit np.sort(lst)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"> <span style=\"font-size: 15px;\">292 \u00b5s \u00b1 4.9 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 1000 loops each)<\/span><\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>\u00a0<\/strong><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Julia Microbenchmark<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\">   <span style=\"font-size: 15px;\"> julia&gt; function qsort!(a,lo,hi)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">i, j = lo, hi<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">while i &lt; hi<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 pivot = a[(lo+hi)&gt;&gt;&gt;1]<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                   <span style=\"font-size: 15px;\">while i &lt;= j<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                       <span style=\"font-size: 15px;\">while a[i] &lt; pivot; i += 1; end \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0while a[j] &gt; pivot; j -= 1; end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                       <span style=\"font-size: 15px;\">if i &lt;= j<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 a[i], a[j] = a[j], a[i]<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                           <span style=\"font-size: 15px;\">i, j = i+1, j-1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                       <span style=\"font-size: 15px;\">end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                   <span style=\"font-size: 15px;\">end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                   <span style=\"font-size: 15px;\">if lo &lt; j; qsort!(a,lo,j); end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 lo, j = i, hi<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">return a<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">           <span style=\"font-size: 15px;\">end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0qsort! (generic function with 1 method)\n\n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0julia&gt; sortperf(n) = qsort!(rand(n), 1, n)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0sortperf (generic function with 1 method)\n\n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0julia&gt; @btime sortperf(5000)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\">     <span style=\"font-size: 15px;\">355.957 \u03bcs (2 allocations: 39.14 KiB)<\/span><\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\">\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Julia Base.sort<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">julia&gt; @btime sort(rand(5000); alg=QuickSort)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">233.293 \u03bcs (11 allocations: 78.66 KiB)<\/span><\/pre>\n<p class=\"ql-heading-subtitle ql-long-3763112\" style=\"white-space: normal;\"><strong><span style=\"color: #ec8921;\">\u00a0<\/span><\/strong><\/p>\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<p><span style=\"color: #ec8921;\">\u00a0\u66fc\u5fb7\u5e03\u7f57\u7279\u96c6<\/span><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal;\">\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6211\u7684\u6d4b\u8bd5\u7ed3\u679c\u663e\u793a Numba(159us) vs Julia(72us)\u3002<\/span><\/p>\n<p style=\"margin-right: 16px; margin-left: 16px; white-space: normal;\"><span class=\"ql-author-3763112\">\u00a0<\/span><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Numba<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">In [106]: @jit<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: def mandel_numba(z):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 maxiter = 80<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 c = z<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 for n in range(maxiter):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 \u00a0 \u00a0 if abs(z) &gt; 2:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 \u00a0 \u00a0 z = z*z + c<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 return maxiter<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">In [107]: @jit<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: def mandelperf_numba_mesh():<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 width = 26<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 height = 21<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 r1 = np.linspace(-2.0, 0.5, width)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 r2 = np.linspace(-1.0, 1.0, height)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 mandel_set = np.empty((width,height), dtype=int)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 for i in range(width):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 \u00a0 \u00a0 for j in range(height):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 mandel_set[i,j] = mandel_numba(r1[i] + 1j*r2[j])<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 return mandel_set<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">In [109]: %timeit mandelperf_numba_mesh()<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0:1: NumbaWarning: Function \"mandelperf_numba_mesh\" failed type inference: Invalid usage of Function() with parameters ((int64 x 2), dtype=Function(&lt;class 'int'&gt;))<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 * parameterized<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">File \"\", line 7<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0[1] During: resolving callee type: Function()<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0[2] During: typing of call at \u00a0(7)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0@jit<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0:1: NumbaWarning: Function \"mandelperf_numba_mesh\" failed type inference: cannot determine Numba type of &lt;class 'numba.dispatcher.LiftedLoop'&gt;<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">File \"\", line 8<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0@jit<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0:1: NumbaWarning: Function \"mandelperf_numba_mesh\" was compiled in object mode without forceobj=True, but has lifted loops.<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0@jit<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">159 \u00b5s \u00b1 7.55 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 10000 loops each) \u00a0 <\/span><\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\">\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Julia<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0julia&gt; function mandel(z)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">c = z<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">maxiter = 80<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">for n = 1:maxiter<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                   <span style=\"font-size: 15px;\">if myabs2(z) &gt; 4<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return n-1<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                   <span style=\"font-size: 15px;\">end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 z = z^2 + c<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return maxiter<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">           <span style=\"font-size: 15px;\">end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0mandel (generic function with 1 method)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">julia&gt; mandelperf() = [ mandel(complex(r,i)) for i=-1.:.1:1., r=-2.0:.1:0.5 ]<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0mandelperf (generic function with 1 method)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">julia&gt; @btime mandelperf()<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a072.942 \u03bcs (1 allocation: 4.44 KiB)<\/span><\/pre>\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<p><span style=\"color: #ec8921;\"><strong>\u00a0<\/strong><\/span><\/p>\n<p><span style=\"color: #ec8921;\"><strong>\u00a0\u6574\u578b\u8f6c\u5316<\/strong><\/span><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6ce8\u610f\uff0c\u6211\u5220\u9664\u4e86\u58f0\u660e\u8bed\u53e5\uff0c\u56e0\u4e3a\u8fd9\u4e2a\u57fa\u51c6\u6d4b\u8bd5\u4f3c\u4e4e\u6ca1\u6709\u5fc5\u8981\u4f7f\u7528\u58f0\u660e\u8bed\u53e5\u3002\u6211\u7684\u6d4b\u8bd5\u7ed3\u679c\u663e\u793a:<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\">\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">1.\u539f\u59cb \u2013 Numpy (2340 \u03bcs) vs. Julia (176 \u03bcs)\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">2.\u5916\u5faa\u73af\u968f\u673a\u6570\u751f\u6210 \u2013 Cython (378 \u00b5s) vs Julia (176 \u03bcs)\u3002<\/span><\/p>\n<p style=\"white-space: normal;\"><span class=\"ql-author-3763112\">\u00a0<\/span><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\">   <span style=\"font-size: 15px;\">In [112]: def parse_int1_numpy():<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 for i in range(1,1000):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 n = np.random.randint(0,2**31-1)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 s = hex(n)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">         <span style=\"font-size: 15px;\">...: \u00a0 \u00a0 \u00a0 \u00a0 m = int(s,16)\n \u00a0 \u00a0 \u00a0 \u00a0 \n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">In [113]: %timeit parse_int1_numpy()<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a02.34 ms \u00b1 80 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 100 loops each) <\/span><\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>\u00a0<\/strong><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Julia<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\">    julia&gt; <span class=\"hljs-keyword\">function<\/span> parseintperf(t)<\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span class=\"hljs-keyword\">local<\/span> n, m<\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span class=\"hljs-keyword\">for<\/span> i=<span class=\"hljs-number\">1<\/span>:t<\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                   n = rand(<span class=\"hljs-built_in\">UInt32<\/span>)<\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">                   s = hex(n)<\/pre>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 m = UInt32(parse(Int64,s,16))<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">end<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">end<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0parseintperf (generic function with 1 method)<\/p>\n<p><\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0julia&gt; @btime parseintperf(1000)<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">176.061 \u03bcs (2000 allocations: 93.75 KiB) \u00a0 \u00a0<\/span><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>\u00a0<\/strong><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Cython(\u5916\u5faa\u73af)<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">In [116]: %%cython<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: import numpy as np<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: import cython<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: <\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: @cython.boundscheck(False)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: @cython.wraparound(False)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: cpdef parse_int_vec_cython():<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 cdef:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 \u00a0 \u00a0 long i,m<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 \u00a0 \u00a0 long[:] n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 n = np.random.randint(0,2**31-1,1000)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 for i in range(1,1000):<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: \u00a0 \u00a0 \u00a0 \u00a0 m = int(hex(n[i]),16)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 ...: <\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0In [118]: %timeit parse_int_vec_cython()<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">378 \u00b5s \u00b1 5.29 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 1000 loops each)<\/span><\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>\u00a0<\/strong><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><strong>Julia(\u5916\u5faa\u73af)<\/strong><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"> <span style=\"font-size: 15px;\"> \u00a0 julia&gt; function parseintperf2(t)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">n = rand(UInt32, t)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">for i=1:t<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 s = hex(n[i])<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 m = UInt32(parse(Int64,s,16))<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">               <span style=\"font-size: 15px;\">end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">           <span style=\"font-size: 15px;\">end<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0parseintperf2 (generic function with 1 method)\n\n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">    <span style=\"font-size: 15px;\">julia&gt; @btime parseintperf2(1000)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> \u00a0 \u00a0 \u00a0176.053 \u03bcs (2003 allocations: 97.97 KiB)<\/span><\/pre>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><span class=\"ql-author-3763112\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u5478\uff0c\u8ba9\u6211\u4eec\u56de\u5230\u6700\u521d\u7684\u535a\u5ba2\u5e16\u5b50\u3002<\/span><\/p>\n<p style=\"white-space: normal;\">\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section class=\"mpa-template\">\n<section class=\"\">\n<section style=\"margin-top: 20px; display: flex; -webkit-box-pack: center; justify-content: center; -webkit-box-align: center; align-items: center;\">\n<section style=\"padding-right: 30px; padding-left: 30px; min-width: 60px; text-align: center; border-bottom: 2px solid #e8e6e6;\">\n<section style=\"padding-right: 10px; padding-left: 10px; display: inline-block; font-size: 14px; color: #ff8000; border-bottom: 2px solid #ff8000; transform: translate(0px, 2px); border-top-color: #ff8000; border-left-color: #ff8000; border-right-color: #ff8000;\"><strong style=\"color: #7b0c00;\"><span class=\"\" style=\"color: #ec8921;\"><strong><span style=\"font-size: 16px;\">\u8bed\u8a00<\/span><\/strong><\/span><\/strong><\/section>\n<\/section>\n<p><strong style=\"color: #7b0c00;\">\u00a0<\/strong><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4f5c\u8005\u5bf9Julia\u8bed\u8a00\u672c\u8eab\u5c31\u6709\u4e00\u4e9b\u6279\u8bc4\uff1a<br \/>\n<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<blockquote style=\"white-space: normal;\">\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4e0d\u5e73\u8861(Unbalanced)\u7684end<\/span><\/p>\n<\/blockquote>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6211\u4e2a\u4eba\u8ba4\u4e3a\u8fd9\u5e76\u4e0d\u662f\u4ec0\u4e48\u95ee\u9898\uff0c\u800c\u662f\u4e2a\u4eba\u559c\u6b22\u3002\u5927\u591a\u6570\u8bed\u8a00\u90fd\u6709\u4e00\u4e2a\u5757\u7684\u7ed3\u5c3e\u6807\u8bb0\u3002\u4f46\u662f\u6211\u4e0d\u660e\u767d\u4e0d\u5e73\u8861\u662f\u4ec0\u4e48\u610f\u601d\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<blockquote style=\"white-space: normal;\">\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4f7f\u7528::<\/span><\/p>\n<\/blockquote>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u8fd9\u4e0d\u662f\u95ee\u9898\uff0c\u662f\u4e2a\u4eba\u559c\u597d\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<blockquote style=\"white-space: normal;\">\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u975e\u6b63\u7edf\u7684\u64cd\u4f5c\u7b26\uff0c\u6807\u70b9\uff0c\u548c\u591a\u884c\u6ce8\u91ca\u8bed\u6cd5<\/span><\/p>\n<\/blockquote>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">Julia\u7684\u6807\u70b9\u4f3c\u4e4e\u4e0e\u8bb8\u591a\u7f16\u7a0b\u8bed\u8a00\u5e76\u6ca1\u6709\u4ec0\u4e48\u592a\u5927\u7684\u4e0d\u540c\u3002\u8fd9\u611f\u89c9\u53c8\u662f\u4e00\u4e2a\u4e2a\u4eba\u559c\u597d\u95ee\u9898\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<blockquote style=\"white-space: normal;\">\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">1\u57fa\u6570\u7684\u7d22\u5f15\uff08one-based-indexing\uff09<\/span><\/p>\n<\/blockquote>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u8fd9\u662f\u6211\u6700\u559c\u6b22\u7684\u3002\u4e24\u4e2a\u9635\u8425\u90fd\u6709\u4f18\u70b9\u3002\u8fd9\u771f\u7684\u53d6\u51b3\u4e8e\u4f60\u7684\u4f7f\u7528\u548c\u5177\u4f53\u60c5\u5883\u3002\u6b63\u5982\u5927\u5bb6\u5728\u8bba\u575b\u4e0a\u6307\u51fa\u7684\u90a3\u6837\uff0c\u6709\u4e00\u4e9b\u5305\uff08\u6bd4\u5982OffserArray\u548cPemutedDimsArray\uff09\u4f7f\u75280\u4f5c\u4e3a\u57fa\u6570\u4f1a\u66f4\u52a0\u81ea\u7136\u3002\u633a\u597d\u7684\uff0c\u81f3\u5c11\u6211\u4eec\u6709\u9009\u62e9\u6743\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<blockquote style=\"white-space: normal;\">\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6807\u51c6\u6587\u6863\u7cfb\u7edf\u4f7f\u7528Markdown<\/span><\/p>\n<\/blockquote>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u51e0\u4e2a\u6708\u524d\u6211\u5f00\u59cb\u4f7f\u7528Julia\u7f16\u7a0b\uff0c\u53d1\u73b0\u8fd9\u4e2a\u6587\u6863\u7cfb\u7edf\u5f88\u76f4\u89c2\u548c\u7b80\u5355\u3002\u7136\u800c\uff0c\u6211\u8ba4\u4e3a\u4f5c\u8005\u5728\u4e00\u7bc7\u540e\u7eed\u7684\u535a\u5ba2\u4e2d\u63d0\u4f9b\u4e86\u66f4\u591a\u7684\u4fe1\u606f\uff0c\u6211\u8ba4\u4e3a\u4f5c\u8005\u63d0\u51fa\u4e86\u4e00\u4e2a\u4e0d\u9519\u7684\u89c2\u70b9\u3002\u770b\u6765\u610f\u89c1\u662f\u53d1\u751f\u4e86\u5206\u6b67\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u5728Julia\u7684\u6848\u4f8b\u4e2d\uff0c\u8fd9\u4e2a\u9009\u62e9\u662f\u5728\u65e9\u671f\u4f7f\u7528reST\u7684\u51e0\u4e2a\u75db\u70b9\u4e0b\u51b3\u5b9a\u7684\u3002\u5728\u505a\u4e86\u5404\u79cd\u5404\u6837\u7684\u7814\u7a76\u4e4b\u540e\u3002\u5728\u6211\u770b\u6765\uff0cReStructuredText\u66f4\u52a0\u4e25\u683c\u548c\u5b9e\u7528\uff0c\u800cMarkdown\u66f4\u52a0\u5bb9\u6613\u5b66\u4e60\u548c\u5b9e\u7528\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6700\u540e\uff0c\u8fd9\u91cc\u5176\u5b9e\u5e76\u6ca1\u6709\u5bf9\u4e0e\u9519\u3002\u6211\u4eec\u77e5\u9053\u5f00\u53d1\u4eba\u5458\u4ece\u6765\u6ca1\u6709\u5728\u4e00\u4ef6\u4e8b\u4e0a\u8fbe\u6210\u8fc7\u4e00\u81f4\u3002\u5e78\u8fd0\u7684\u662f\uff0c\u5f00\u53d1\u4eba\u5458\u603b\u6570\u53ef\u4ee5\u9009\u62e9\u81ea\u5df1\u505a\u51b3\u5b9a\u3002\u6211\u4eec\u5b8c\u5168\u5c0a\u91cd\u90a3\u4e9b\u9009\u62e9ReStructuredText\u800c\u4e0d\u662fMarkdown\u7684\u9879\u76ee\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002<\/span><\/p>\n<p style=\"white-space: normal;\">\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section class=\"mpa-template\">\n<section class=\"\">\n<section style=\"margin-top: 20px; display: flex; -webkit-box-pack: center; justify-content: center; -webkit-box-align: center; align-items: center;\">\n<section style=\"padding-right: 30px; padding-left: 30px; min-width: 60px; text-align: center; border-bottom: 2px solid #e8e6e6;\">\n<section style=\"padding-right: 10px; padding-left: 10px; display: inline-block; font-size: 14px; color: #ff8000; border-bottom: 2px solid #ff8000; transform: translate(0px, 2px); border-top-color: #ff8000; border-left-color: #ff8000; border-right-color: #ff8000;\"><strong style=\"color: #7b0c00;\"><span class=\"\" style=\"color: #ec8921;\"><strong><span style=\"font-size: 16px;\">\u5b89\u5168<\/span><\/strong><\/span><\/strong><\/section>\n<\/section>\n<p><strong style=\"color: #7b0c00;\">\u00a0<\/strong><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4f5c\u8005\u8ba4\u4e3a\uff0c\u4f7f\u7528ccall\u65f6Julia\u5f88\u5bb9\u6613\u4ea7\u751f\u5185\u5b58\u533a\u6bb5\u9519\u8bef\u3002\u6211\u53d1\u73b0\u5b83\u4e0e\u73b0\u72b6\u7684Julia\u7248\u672c\u4e0d\u7b26\u3002\u7531\u4e8e\u9519\u8bef\u7684\u5e93\u540d\u79f0\u548c\u6570\u636e\u7c7b\u578b\uff0c\u6211\u65e0\u6cd5\u751f\u6210\u4e00\u4e2a\u5185\u5b58\u533a\u6bb5\u9519\u8bef\u3002\u7136\u800c\uff0c\u6211\u53ef\u4ee5\u6536\u5230\u4e00\u4e2a\u5f88\u597d\u7684\u9519\u8bef\u4fe1\u606f\u3002<\/span><\/p>\n<p class=\"ql-long-3763112\" style=\"white-space: normal;\"><span class=\"ql-author-3763112\">\u00a0<\/span><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">julia&gt; val = ccall((:getenv, \"libc.so.6\"), Ptr{UInt8}, (Ptr{UInt8},), var)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> ERROR: error compiling anonymous: could not load library \"libc.so.6\"<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> dlopen(libc.so.6.dylib, 1): image not found\n \n<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">julia&gt; val = ccall((:getenv, \"libc.dylib\"), Ptr{UInt8}, (Ptr{UInt8},), 123)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> ERROR: MethodError: no method matching unsafe_convert(::Type{Ptr{UInt8}}, ::Int64)<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> Closest candidates are:<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> unsafe_convert(::Type{Ptr{UInt8}}, ::Symbol) at pointer.jl:35<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> unsafe_convert(::Type{Ptr{UInt8}}, ::String) at pointer.jl:37<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\"> unsafe_convert(::Type{T&lt;:Ptr}, ::T&lt;:Ptr) where T&lt;:Ptr at essentials.jl:152 ...<\/span><\/pre>\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<p><span style=\"color: #ec8921;\">\u00a0Printf\/Sprintf<\/span><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u5bf9\u4e8e\u751f\u6210\u5927\u91cf\u5b8f\u7684@sprintf\u548c@printf\uff0c\u4f5c\u8005\u597d\u50cf\u5bf9\u6b64\u6709\u70b9\u4e0d\u6ee1\u3002<br \/>\n<\/span><\/p>\n<p style=\"white-space: normal; line-height: 1.5em;\">\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u90a3\u65f6\u5019\u53ef\u80fd\u662f\u771f\u7684\uff0c\u4f46\u662f\u73b0\u5728\u6709\u5f88\u591a\u89e3\u51b3\u65b9\u6cd5\u3002\u8fd9\u662f\u4e00\u4e2a\u6b63\u5728\u7ecf\u5386\u5feb\u901f\u521b\u65b0\u7684\u9886\u57df\u3002\u4e00\u4e9bJulia\u7684\u5305\u53ef\u4ee5\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002\u6bd4\u5982\uff1aFormatting.jl\u548cStringLiterals.jl\u3002<\/span><\/p>\n<p style=\"white-space: normal; line-height: 1.5em;\">\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4e0b\u9762\u8fd9\u884c\u4ee3\u7801\u53ea\u751f\u621063\u884c\u672c\u5730\u4ee3\u7801\uff0c\u76f8\u6bd4\u4e4b\u4e0b\uff0c\u4f5c\u8005\u5728\u8fc7\u53bb\u8bf4\u6709500+\u884c\u3002<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">julia&gt; @code_native Formatting.printfmt(&#8220;{1:&gt;4s} {2:.2f}&#8221;, &#8220;abc&#8221;, 12)<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal;\"><span style=\"font-size: 15px;\">\u5982\u679c\u6211\u7f16\u8bd1\u4e0b\u9762\u7684C\u4ee3\u7801\uff0c\u6211\u53ea\u4f1a\u5f97\u523021\u884c\u6c47\u7f16\u6307\u4ee4\u3002\u60f3\u8981\u6253\u8d25C\u8bed\u8a00\u8fd8\u662f\u6709\u70b9\u56f0\u96be\u7684\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<pre class=\"ql-syntax ql-authorBlock-3763112 first-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">void f(char *buffer, const char *a, double b) {<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 ql-long-3763112\" spellcheck=\"false\">  <span style=\"font-size: 15px;\">sprintf(buffer, \"this is a %s %g\", a, b);<\/span><\/pre>\n<pre class=\"ql-syntax ql-authorBlock-3763112 last-line ql-long-3763112\" spellcheck=\"false\"><span style=\"font-size: 15px;\">}<\/span><\/pre>\n<p style=\"white-space: normal;\">\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<p><span style=\"color: #ec8921;\">\u00a0\u5355\u5143\u6d4b\u8bd5<\/span><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u4f5c\u8005\u8ba4\u4e3a\uff0cJulia\u7684\u5355\u5143\u6d4b\u8bd5\u5e93\u662f\u53d7\u9650\u7684\uff1a<br \/>\n<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<blockquote class=\"ql-long-3763112\" style=\"white-space: normal;\">\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u5355\u5143\u6d4b\u8bd5\u5e93\u662f\u975e\u5e38\u57fa\u672c\u7684\uff0c\u81f3\u5c11\u5bf9\u4e8eC++\u548cJava\u800c\u8a00\u662f\u8fd9\u6837\u7684\u3002\u53ef\u4ee5\u8bf4\uff0cFactCheck\u662f\u6700\u53d7\u6b22\u8fce\u7684\u9009\u62e9\uff0c\u4f46\u662f\u9664\u4e86\u5947\u602a\u7684API\u4e4b\u5916\uff0c\u5b83\u662f\u76f8\u5f53\u53d7\u9650\u7684\uff0c\u800c\u4e14\u4e5f\u57fa\u672c\u4e0d\u518d\u5f00\u53d1\u3002<\/span><\/p>\n<\/blockquote>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u5f53\u6211\u5728\u5f00\u53d1SASLib.jl\u7684\u65f6\u5019\uff0c\u6211\u53ea\u4f7f\u7528Base.Test\u3002\u6211\u89c9\u5f97\u5b83\u5bf9\u7528\u6237\u662f\u975e\u5e38\u53cb\u597d\u7684\uff0c\u5e76\u4e14\u5b83\u505a\u4e86\u6211\u6b63\u9700\u8981\u7684\u4e8b\u60c5\u3002\u4f5c\u8005\u63d0\u5230\u4e86FactCheck\u5305\uff0c\u8fd9\u4f3c\u4e4e\u662f\u4e00\u4e2a\u5408\u7406\u7684\u9644\u52a0\u6761\u4ef6\u3002\u6211\u4ee5\u524d\u6ca1\u7528\u8fc7FactCheck\uff0c\u6240\u4ee5\u6211\u5728\u8fd9\u91cc\u5c31\u4e0d\u53d1\u8868\u989d\u5916\u7684\u89c1\u89e3\u4e86\u3002<\/span><\/p>\n<p style=\"white-space: normal;\">\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<p><span style=\"color: #ec8921;\">\u00a0\u53d1\u5c55<\/span><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6709\u8da3\u7684\u662f\uff0c\u4f5c\u8005\u8bf4\u4ed6\u8003\u8651\u8fc7\u4e3aJulia\u9879\u76ee\u505a\u8d21\u732e\uff0c\u4f46\u662f\u4ed6\u4e0d\u559c\u6b22Julia\u7684\u8fd0\u884c\u65f6\u662f\u7531\u51e0\u79cd\u7f16\u7a0b\u8bed\u8a00C\/C++\uff0cLisp\uff0c\u548cJulia\u6784\u5efa\u7684\u3002<br \/>\n<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6211\u4e0d\u660e\u767d\u8fd9\u6709\u4ec0\u4e48\u5927\u4e0d\u4e86\u7684\u3002\u5982\u679c\u6211\u7edf\u8ba1\u4e00\u4e0b\u5bf9\u4e8eJulia 0.6\u5404\u4e2a\u8bed\u8a00\u5206\u522b\u6709\u591a\u5c11\u884c\u4ee3\u7801\uff1a<\/span><\/p>\n<ul class=\"ql-long-3763112 list-paddingleft-2\" style=\"margin-left: 8px; margin-right: 8px;\">\n<li>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">Julia 175,147<\/span><\/p>\n<\/li>\n<\/ul>\n<ul class=\"ql-long-3763112 list-paddingleft-2\" style=\"margin-left: 8px; margin-right: 8px;\">\n<li>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">C\/C++ 70,694<\/span><\/p>\n<\/li>\n<li>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">Femtolisp 8,270<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<\/li>\n<\/ul>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">C\/C++\u7684\u4ee3\u7801\u5bf9\u4e8eJulia\u7684\u57fa\u7840\u8fd0\u884c\u65f6\u662f\u975e\u5e38\u9700\u8981\u7684\u3002\u7136\u540eJulia\u8bed\u8a00\u7684\u5927\u90e8\u5206\u4f7f\u7528Julia\u8bed\u8a00\u672c\u8eab\u6784\u5efa\u7684\u3002\u6240\u4ee5\u6211\u4eec\u8ba8\u8bba\u4e00\u4e0bFemtolisp 3.3%\u7684\u4ee3\u7801\uff0c\u8fd9\u662f\u4e00\u4e2a\u7c7bschema\u7684lisp\u5b9e\u73b0\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6211\u6700\u8fd1\u6709\u8fc7\u4e3aJulia\u9879\u76ee\u505a\u8d21\u732e\u7684\u7ecf\u5386\u3002\u8bba\u575b\u4e0a\u7684\u793e\u533a\u6210\u5458\u975e\u5e38\u53cb\u597d\uff0c\u6838\u5fc3\u5f00\u53d1\u56e2\u961f\u4e5f\u603b\u662f\u5728\u7ebf\u3002\u5982\u679c\u6211\u60f3\u505a\u66f4\u591a\u8d21\u732e\uff0c\u90a3\u5c31\u6ca1\u4ec0\u4e48\u969c\u788d\uff0c\u6211\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u5f97\u5230\u5f88\u591a\u5e2e\u52a9\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6700\u540e\uff0c\u4f5c\u8005\u5f15\u7528\u4e86\u4e00\u7bc7\u7b2c\u4e09\u65b9\u7684\u95ee\u9898\uff0c\u9898\u76ee\u662f\u201cJulia\u662f\u5982\u4f55\u653e\u6162\u811a\u6b65\uff0c\u5e76\u4ece\u70ed\u70b9\u4e2d\u6d88\u5931\u201d\u3002\u6211\u4e0d\u77e5\u9053\u5f53\u65f62015\u5e74\u7684\u73af\u5883\uff0c\u4f46\u662f\u8003\u8651\u5230Julia\u521a\u4ece2017\u5e74\u5f97\u5230\u79cd\u5b50\u6295\u8d44\u3002\u6211\u9884\u8ba1\u5b83\u4f1a\u52a0\u901f\u800c\u4e0d\u662f\u51cf\u7f13\u3002\u65f6\u95f4\u4f1a\u544a\u8bc9\u6211\u4eec\uff0c\u5f53Julia\u63a5\u8fd11.0\u91cc\u7a0b\u7891\u65f6\uff0c\u8fd9\u4e2a\u52a8\u529b\u662f\u5426\u4f1a\u7ee7\u7eed\u4e0b\u53bb\u3002<\/span><\/p>\n<section style=\"white-space: normal;\">\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section>\n<section class=\"mpa-template\">\n<section class=\"\">\n<section style=\"margin-top: 20px; display: flex; -webkit-box-pack: center; justify-content: center; -webkit-box-align: center; align-items: center;\">\n<section style=\"padding-right: 30px; padding-left: 30px; min-width: 60px; text-align: center; border-bottom: 2px solid #e8e6e6;\">\n<section style=\"padding-right: 10px; padding-left: 10px; display: inline-block; font-size: 14px; color: #ff8000; border-bottom: 2px solid #ff8000; transform: translate(0px, 2px); border-top-color: #ff8000; border-left-color: #ff8000; border-right-color: #ff8000;\"><strong style=\"color: #7b0c00;\"><span class=\"\" style=\"color: #ec8921;\"><strong><span style=\"font-size: 16px;\">\u00a0\u6700\u540e<\/span><\/strong><\/span><\/strong><\/section>\n<\/section>\n<p><strong style=\"color: #7b0c00;\">\u00a0<\/strong><\/p>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u6211\u5e0c\u671b\u8fd9\u7bc7\u535a\u6587\u5bf9\u4efb\u4f55\u8bc4\u4ef7Julia\u7684\u4eba\u90fd\u6709\u7528\u3002<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em;\"><span style=\"font-size: 15px;\">\u00a0<\/span><\/p>\n<section class=\"\" style=\"max-width: 100%; color: #333333;\">\n<section style=\"margin-top: 20px; max-width: 100%; display: flex; -webkit-box-pack: center; justify-content: center; -webkit-box-align: center; align-items: center; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<section style=\"padding-right: 30px; padding-left: 30px; max-width: 100%; min-width: 60px; text-align: center; border-bottom: 2px solid #e8e6e6; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<section style=\"padding-right: 10px; padding-left: 10px; max-width: 100%; display: inline-block; font-size: 14px; color: #ff8000; border-bottom: 2px solid #ff8000; transform: translate(0px, 2px); border-top-color: #ff8000; border-left-color: #ff8000; border-right-color: #ff8000; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<p style=\"max-width: 100%; min-height: 1em; border-color: #7b0c00; box-sizing: border-box !important; word-wrap: break-word !important;\"><span style=\"max-width: 100%; border-color: #7b0c00; color: #ec8921; box-sizing: border-box !important; word-wrap: break-word !important;\">\u63a8\u8350\u8bfe\u7a0b<\/span><\/p>\n<\/section>\n<\/section>\n<p style=\"max-width: 100%; min-height: 1em; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<p style=\"max-width: 100%; min-height: 1em; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<p style=\"max-width: 100%; min-height: 1em; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<p style=\"max-width: 100%; min-height: 1em; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<p style=\"max-width: 100%; min-height: 1em; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<\/section>\n<\/section>\n<p style=\"max-width: 100%; min-height: 1em; color: #333333;\"><span style=\"max-width: 100%; font-size: 18px; box-sizing: border-box !important; word-wrap: break-word !important;\">\u00a0<\/span><\/p>\n<blockquote style=\"max-width: 100%; color: #333333;\">\n<p style=\"max-width: 100%; min-height: 1em; text-align: left; box-sizing: border-box !important; word-wrap: break-word !important;\"><span style=\"max-width: 100%; text-align: center; font-size: 16px; box-sizing: border-box !important; word-wrap: break-word !important;\">https:\/\/campus.swarma.org\/gcou=388<\/span><\/p>\n<\/blockquote>\n<p style=\"max-width: 100%; min-height: 1em; color: #333333;\">\n<p style=\"max-width: 100%; min-height: 1em; color: #333333;\"><img class=\"\" style=\"box-sizing: border-box !important; word-wrap: break-word !important; width: 677px !important; visibility: visible !important;\" title=\"\u96c6\u667a\" src=\"http:\/\/swarma.org\/wp-content\/uploads\/2018\/08\/swarma0-1534261655.jpg\" alt=\"\u96c6\u667a\" \/><\/p>\n<p style=\"max-width: 100%; min-height: 1em; color: #333333;\"><span style=\"max-width: 100%; color: #1a1a1a; font-size: 15px; box-sizing: border-box !important; word-wrap: break-word !important;\">\u8be5\u6559\u7a0b\u89c6\u9891\u540c\u65f6\u53d1\u5e03\u5728\u54d4\u54e9\u54d4\u54e9\u5f39\u5e55\u7f51\uff1a<\/span><\/p>\n<p style=\"max-width: 100%; min-height: 1em; color: #333333;\"><span style=\"max-width: 100%; color: #1a1a1a; font-size: 15px; box-sizing: border-box !important; word-wrap: break-word !important;\">\u89c6\u9891\u5730\u5740\u4e00\uff1ahttps:\/\/www.bilibili.com\/video\/av28248187<\/span><\/p>\n<p style=\"max-width: 100%; min-height: 1em; color: #333333;\"><span style=\"max-width: 100%; color: #1a1a1a; font-size: 15px; box-sizing: border-box !important; word-wrap: break-word !important;\"><span style=\"max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;\">\u89c6\u9891\u5730\u5740\u4e8c\uff1ahttps:\/\/www.bilibili.com\/video\/av28178443<\/span><\/span><\/p>\n<p style=\"max-width: 100%; min-height: 1em; color: #333333;\"><span style=\"max-width: 100%; color: #1a1a1a; font-size: 15px; box-sizing: border-box !important; word-wrap: break-word !important;\">\u00a0<\/span><\/p>\n<p style=\"max-width: 100%; min-height: 1em; color: #333333;\"><span style=\"max-width: 100%; color: #1a1a1a; font-size: 15px; box-sizing: border-box !important; word-wrap: break-word !important;\">\u00a0<\/span><\/p>\n<p style=\"max-width: 100%; min-height: 1em; color: #333333;\"><span style=\"max-width: 100%; color: #1a1a1a; font-size: 15px; box-sizing: border-box !important; word-wrap: break-word !important;\">\u00a0<\/span><\/p>\n<section style=\"margin-top: 20px; max-width: 100%; color: #333333;\">\n<section style=\"padding-right: 30px; padding-left: 30px; max-width: 100%; min-width: 60px; text-align: center; border-bottom: 2px solid #e8e6e6; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<section style=\"padding-right: 10px; padding-left: 10px; max-width: 100%; display: inline-block; font-size: 14px; color: #ff8000; border-bottom: 2px solid #ff8000; transform: translate(0px, 2px); border-top-color: #ff8000; border-left-color: #ff8000; border-right-color: #ff8000; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<p style=\"max-width: 100%; min-height: 1em; border-color: #7b0c00; box-sizing: border-box !important; word-wrap: break-word !important;\"><span style=\"max-width: 100%; border-color: #7b0c00; color: #ec8921; box-sizing: border-box !important; word-wrap: break-word !important;\">\u63a8\u8350\u9605\u8bfb<\/span><\/p>\n<\/section>\n<\/section>\n<p style=\"max-width: 100%; min-height: 1em; box-sizing: border-box !important; word-wrap: break-word !important;\">\n<\/section>\n<p style=\"margin-right: 8px; margin-left: 8px; white-space: normal; line-height: 1.5em; text-align: center;\"><span style=\"font-size: 15px;\"><br \/>\n<\/span><a style=\"text-decoration: underline;\" href=\"http:\/\/mp.weixin.qq.com\/s?__biz=MzI0MjY5NTM2MQ==&amp;mid=2247486519&amp;idx=1&amp;sn=4e17f179743fc3e6657716e24cbf2bda&amp;chksm=e9792199de0ea88fb78e284b227cc39b32cf0d6fda247b937ec09040c47ad5e3320869d482b5&amp;scene=21#wechat_redirect\" target=\"_blank\" rel=\"noopener\">Julia\u8bed\u8a00\u6781\u7b80\u5165\u95e8\u6559\u7a0b<\/a><\/p>\n<p style=\"white-space: normal;\">\n<p style=\"white-space: normal;\">\n<p style=\"white-space: normal;\">\n<section class=\"mpa-template\" style=\"white-space: normal;\">\n<blockquote>\n<p style=\"color: #333333; font-size: 17px; line-height: 1.5em;\"><span style=\"color: #888888; letter-spacing: 1px; font-size: 15px;\">\u7ffb\u8bd1\uff1a\u590f\u4f73\u8c6a<\/span><\/p>\n<p style=\"color: #333333; font-size: 17px; line-height: 1.5em;\"><span style=\"color: #888888; letter-spacing: 1px; font-size: 15px;\">\u7f16\u8f91\uff1a\u5b5f\u5a55<\/span><\/p>\n<p style=\"color: #333333; font-size: 17px; line-height: 1.5em;\"><span style=\"letter-spacing: 1px; font-size: 15px; color: #888888;\">\u539f\u6587\u5730\u5740\uff1a<\/span><\/p>\n<p style=\"line-height: 1.5em;\"><span style=\"color: #888888; font-size: 15px;\">https:\/\/tk3369.wordpress.com<\/span><\/p>\n<\/blockquote>\n<\/section>\n<p style=\"color: #333333;\">\n<hr class=\"\" style=\"color: #333333;\" \/>\n<p class=\"\" style=\"margin-top: 5px; margin-bottom: 5px; color: #333333; text-align: center;\"><span style=\"color: #000000; font-size: 15px;\">\u5173\u6ce8\u96c6\u667aAI\u5b66\u56ed\u516c\u4f17\u53f7<br \/>\n<\/span><\/p>\n<p class=\"\" style=\"margin-top: 5px; margin-bottom: 5px; color: #333333; text-align: center;\"><span style=\"color: #000000; font-size: 15px;\">\u83b7\u53d6\u66f4\u591a\u66f4\u6709\u8da3\u7684AI\u6559\u7a0b\u5427\uff01<\/span><\/p>\n<p class=\"\" style=\"margin-top: 5px; margin-bottom: 5px; color: #333333; text-align: center;\"><span style=\"color: #000000; font-size: 15px;\">\u641c\u7d22\u5fae\u4fe1\u516c\u4f17\u53f7\uff1aswarmAI<\/span><\/p>\n<p class=\"\" style=\"margin-top: 5px; margin-bottom: 5px; color: #333333; text-align: center;\"><span style=\"color: #000000; font-size: 15px;\">\u96c6\u667aAI\u5b66\u56edQQ\u7fa4\uff1a426390994<\/span><\/p>\n<p class=\"\" style=\"margin-top: 5px; margin-bottom: 5px; color: #333333; text-align: center;\"><span style=\"color: #000000; font-size: 15px;\">\u5b66\u56ed\u7f51\u7ad9\uff1acampus.swarma.org<\/span><\/p>\n<p class=\"\" style=\"margin-top: 5px; margin-bottom: 5px; color: #333333; text-align: center;\"><span style=\"color: #000000; font-size: 15px;\">\u5546\u52a1\u5408\u4f5c\u548c\u6295\u7a3f\u8f6c\u8f7d\uff5cswarma@swarma.org<\/span><\/p>\n<section class=\"\" style=\"color: #333333;\">\n<p style=\"outline: none; text-align: center; line-height: 1.75em;\"><img class=\"\" style=\"color: #000000; visibility: visible !important; width: auto !important; border: 0px initial initial;\" title=\"\u96c6\u667a\" src=\"http:\/\/swarma.org\/wp-content\/uploads\/2018\/08\/swarma3-1534261655.jpeg\" alt=\"\u96c6\u667a\" width=\"auto\" \/><\/p>\n<\/section>\n<blockquote class=\"keep-source\"><p>\u59cb\u53d1\u4e8e\u5fae\u4fe1\u516c\u4f17\u53f7\uff1a \u96c6\u667aAI\u5b66\u56ed<\/p><\/blockquote>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00 Julia \u8bed\u8a001.0\u7248\u672c\u8fd1\u671f\u521a\u521a\u6b63\u5f0f\u4e0a\u7ebf\uff0c\u4f5c\u4e3a\u79d1\u5b66\u548c\u6570\u503c\u8ba1\u7b97\u7684\u795e\u5668\uff0cJulia\u5f15\u8d77\u4e86\u4e1a\u5185\u5e7f\u6cdb\u5173\u6ce8\u3002Julia \u8bed\u8a00\u4ee5\u901f\u5ea6\u8457\u79f0\uff0c\u4f46\u57281.0\u7248\u672c\u4e0a\u7ebf\u4e4b\u524d\u5176\u6027\u80fd\u4e5f\u66fe\u53d7\u5230\u8bf8\u591a\u8d28\u7591\uff0c\u672c\u6587\u662f\u5f00\u53d1\u8005Tom Kwong\u5bf9\u8d28\u7591\u58f0\u97f3\u7684\u56de\u5e94\u2014\u2014\u4e3a\u4ec0\u4e48\u201c\u653e\u5f03Julia\u201d\u7684\u6279\u8bc4\u662f\u8f7b\u7387\u7684\u3002\u672c\u6587\u4f7f\u7528Julia0.6\u7248\u672c\u3002&#8230;<\/p>\n","protected":false},"author":1,"featured_media":10236,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[22],"tags":[2],"special":[],"_links":{"self":[{"href":"https:\/\/swarma.org\/index.php?rest_route=\/wp\/v2\/posts\/10235"}],"collection":[{"href":"https:\/\/swarma.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swarma.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swarma.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/swarma.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10235"}],"version-history":[{"count":3,"href":"https:\/\/swarma.org\/index.php?rest_route=\/wp\/v2\/posts\/10235\/revisions"}],"predecessor-version":[{"id":10246,"href":"https:\/\/swarma.org\/index.php?rest_route=\/wp\/v2\/posts\/10235\/revisions\/10246"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/swarma.org\/index.php?rest_route=\/wp\/v2\/media\/10236"}],"wp:attachment":[{"href":"https:\/\/swarma.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swarma.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swarma.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10235"},{"taxonomy":"special","embeddable":true,"href":"https:\/\/swarma.org\/index.php?rest_route=%2Fwp%2Fv2%2Fspecial&post=10235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}