<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Helvetica Neue";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Nevertheless, performance improvements would always be of interest. Perhaps you could put together a proof-of-concept with some speed comparisons between the current code and your improved code.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><span style="color:#1F497D">--<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Ben Fulton<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Research Applications and Deep Learning<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Research Technologies<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Indiana University<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">E-Mail: </span><a href="mailto:befulton@iu.edu"><span style="color:#0563C1">befulton@iu.edu</span></a><span style="color:#1F497D"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Biopython <biopython-bounces+befulton=iu.edu@mailman.open-bio.org>
<b>On Behalf Of </b>Michiel de Hoon<br>
<b>Sent:</b> Wednesday, September 2, 2020 6:42 AM<br>
<b>To:</b> biopython@biopython.org; Huy Đức Lê <lehuyduc3@gmail.com><br>
<b>Subject:</b> Re: [Biopython] Is it possible at all to change 1 or 2 files into basic C++<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue"">In the past there was some C++ code in Biopython, but we spent quite a bit of time to replace it with C and Python code. Based on our experience in the past, I don't think we should
 go back to adding C++ code to Biopython. The main issues was ran into were:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue"">- Compilation problems on different platforms. Python itself is written in C, and the same compilation flags that were used on a specific platform to compile Python itself are reused
 to compile C extension modules, making the process robust. We don't have this for C++.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue"">- Not many people know how to write extension modules in C (which is fairly well described in the Python documentation); few people will know how to do this correctly in C++, especially
 with regard to memory management. You may be the only person who know how to do this, which means you would be the only person who could maintain such modules.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue"">- The C++ modules we had were actually a mixture of C code and C++ code and did not always have a clean code design.
<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue"">For the sake of portability and maintainability, I think then that BIopython should follow PEP7 and use C (ANSI/ISO C with the C99 extensions defined in PEP7) only.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue"">-Michiel<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue""><o:p> </o:p></span></p>
</div>
</div>
<div id="ydp7c5eb0cbyahoo_quoted_9251470051">
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A">On Sunday, August 30, 2020, 10:35:25 AM GMT+9, Huy Đức Lê <<a href="mailto:lehuyduc3@gmail.com">lehuyduc3@gmail.com</a>> wrote:
<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A"><o:p> </o:p></span></p>
</div>
<div>
<div id="ydp7c5eb0cbyiv9436688553">
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A">if we can get 50%+ performance boost in some functions (such as sorting, or random generator), with minimal extra code? It's entirely possible to do it in C, but
 it'll be longer/harder to maintain. Unchanged code will keep the same speed.<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A">We can stick to basic C++ features (templates, std::string, ...) to keep the C-like simplicity. C++11 would be best.<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A"><br clear="all">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A">--
<o:p></o:p></span></p>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A"><o:p> </o:p></span></p>
<div>
<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="602" style="width:451.5pt;border-collapse:collapse;border-color:currentcolor">
<tbody>
<tr style="min-height:0px">
<td valign="top" style="border:solid #F3F3F3 1.0pt;padding:5.25pt 5.25pt 5.25pt 5.25pt">
<p style="margin:0in"><span style="font-family:"Arial",sans-serif;color:black"><img border="0" width="156" height="103" style="width:1.625in;height:1.0729in" id="_x0000_i1025" src="https://lh6.googleusercontent.com/IJyoaP68AkF3BU3FlmFCX-EC0mBf7bG7a2i1k5DkNw0Cs9OA8ID3bAry0320i5cLqQF6hKHkhxkdZ1A8Ugi7gFp_tA7-tbnYjqHkKHPYsCZziS5Wpkuz9R1MBigVAq1moouwioho"></span><o:p></o:p></p>
</td>
<td valign="top" style="border:solid #F3F3F3 1.0pt;border-left:none;padding:5.25pt 5.25pt 5.25pt 5.25pt">
<p style="margin:0in"><b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#17365D">Duc Le Huy
</span></b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#17365D">(Mr.)</span><o:p></o:p></p>
<p style="margin:0in"><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#17365D">Undergraduate student</span><o:p></o:p></p>
<p style="margin:0in;line-height:200%"><span style="font-size:9.0pt;line-height:200%;font-family:"Arial",sans-serif;color:#17365D">ICT Faculty</span><o:p></o:p></p>
<p style="margin:0in"><b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:red">University of Science & Technology of Hanoi</span></b><o:p></o:p></p>
<p style="margin:0in"><b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#336699">Phone number :</span></b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#336699"> (+84) 918296356</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:10.0pt;margin-left:0in">
<b><span style="font-size:9.0pt;font-family:"Arial",sans-serif;color:#336699">Email:
<a href="mailto:lehuyduc3@gmail.com" target="_blank">lehuyduc3@gmail.com</a></span></b><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue";color:#26282A">_______________________________________________<br>
Biopython mailing list  -  <a href="mailto:Biopython@mailman.open-bio.org" target="_blank">
Biopython@mailman.open-bio.org</a><br>
<a href="https://mailman.open-bio.org/mailman/listinfo/biopython" target="_blank">https://mailman.open-bio.org/mailman/listinfo/biopython</a><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</body>
</html>