I&#x27;m not conviced. Maybe it really is that the wider type is faster, and int_fast16_t <i>should</i> be 64 bits. I just tried it out on a 64 bit system. The program is just a for loop.<p>If the loop variable is a int_fast16_t the loop increment step compiles to<p><pre><code>    	addq	$1, -16(%rbp)
</code></pre>
If it is int16_t it compiles to<p><pre><code>    	movzwl	-4(%rbp), %eax
	addl	$1, %eax
	movw	%ax, -4(%rbp)
</code></pre>
The 64 bit width version is shorter, and so conceivably faster. Performance seems the same though, but that&#x27;s probably because this program isn&#x27;t a proper benchmark.