<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Operating System | Raihan Sultan Pasha Basuki</title><link>http://raihansltn.github.io/tags/operating-system/</link><atom:link href="http://raihansltn.github.io/tags/operating-system/index.xml" rel="self" type="application/rss+xml"/><description>Operating System</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 05 Mar 2025 00:00:00 +0000</lastBuildDate><image><url>http://raihansltn.github.io/media/icon_hu17982769080449357192.png</url><title>Operating System</title><link>http://raihansltn.github.io/tags/operating-system/</link></image><item><title>Why is C Faster Than Python? OS-Level Perspective</title><link>http://raihansltn.github.io/teaching/cvspy/</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0000</pubDate><guid>http://raihansltn.github.io/teaching/cvspy/</guid><description>&lt;p>So, we know that Python is one of the most widely used programming languages today. It powers data science, automation, web development, and machine learning. However, when it comes to raw performance, Python is often criticized for being slow compared to lower-level languages like C.&lt;/p>
&lt;p>But why exactly is Python slower? Is it just because it’s an interpreted language, or perhaps there are deeper system-level reasons? In this article, I’ll try to elaborate my best to explore how execution models, memory management, system calls, and CPU efficiency impact the performance of Python and C.&lt;/p>
&lt;h2 id="video">Video&lt;/h2>
&lt;p>Watch a fully explanation here.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/bIzWk98DHGE?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;h2 id="detailed-explanation-on-my-medium">Detailed Explanation on My Medium!&lt;/h2>
&lt;p>Read full detailed explanation here! &lt;a href="https://medium.com/@raihansltn/why-is-c-faster-than-python-os-level-perspective-04d6e485e3ae" target="_blank" rel="noopener">Click Here!&lt;/a>&lt;/p>
&lt;h2 id="benchmarking-c-vs-python---how-slow-is-python">Benchmarking C vs Python - How Slow is Python?&lt;/h2>
&lt;p>So, I made a roughly same program for both languages. A simple benchmark test. We’ll count prime numbers up to 250.000 in both C and Python.&lt;/p>
&lt;p>Specifically, they:&lt;/p>
&lt;ol>
&lt;li>Check wether a number is prime using a function&lt;/li>
&lt;li>Count the number of prime numbers up to 250.000 using a loop&lt;/li>
&lt;li>Print the total count of prime numbers found within that range&lt;/li>
&lt;/ol>
&lt;p>C program — prime.c&lt;/p>
&lt;pre>&lt;code>```C
#include &amp;lt;stdio.h&amp;gt;
int isPrime(int n) {
if (n &amp;lt; 2) return 0;
if (n == 2) return 1;
if (n % 2 == 0) return 0;
for (int i = 3; i * i &amp;lt;= n; i += 2) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int numPrimes = 0;
for (int i = 2; i &amp;lt;= 250000; i++) {
numPrimes += isPrime(i);
}
printf(&amp;quot;Number of primes up to 250000: %d\n&amp;quot;, numPrimes);
return 0;
}
```
&lt;/code>&lt;/pre>
&lt;p>Python program — prime.py&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">is_prime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="mf">0.5&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">num_primes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">sum&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">is_prime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">250001&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Number of primes up to 250000:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">num_primes&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;__main__&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">main&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="execution-time-comparison">Execution Time Comparison&lt;/h2>
&lt;p>C Result:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">time&lt;/span> ./prime &lt;span class="c1">#it is C&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">real 0m0.012s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Python Result:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">time&lt;/span> python3 prime.py &lt;span class="c1">#it is Python&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">real 0m0.261s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>As we can see on the results, the C program finished in just 0.012 seconds, while Python took 0.261 seconds, that is more than 20 times slower! But why does this happen tho?&lt;/p>
&lt;p>Read full detailed explanation here! &lt;a href="https://medium.com/@raihansltn/why-is-c-faster-than-python-os-level-perspective-04d6e485e3ae" target="_blank" rel="noopener">Click Here!&lt;/a>
Or watch my presentation about it here! &lt;a href="https://www.youtube.com/watch?v=bIzWk98DHGE&amp;amp;t=629s&amp;amp;ab_channel=RaihanSultan" target="_blank" rel="noopener">Click Here to Watch!&lt;/a>&lt;/p></description></item></channel></rss>