<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Timing Allegro program sometimes... fails...</title>
		<link>http://www.allegro.cc/forums/view/616939</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 13 Jun 2017 19:33:40 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I wanted to benchmark blitting various size textures to the screen. </p><p>Either<br /> - Draws per second (requiring FPS timing)<br /> - Seconds per X draws (simply run X blits and time the program&#39;s execution.)</p><p>I ran into an issue with the first method. Since Allegro is using an event structure but is &quot;essentially&quot; single-threaded, I could &quot;fire off&quot; an event that says &quot;one second has passed&quot; but the problem is... how do you TERMINATE an existing job? The job itself would run (say blitting for 1/2 second) and only when that job (a function, really) is finished its for loop, can the event actually be processed.</p><p>I kept trying to get that to work but failing (perhaps I just have a mental block for the simple solution). So I fell back on the second method. Simply draw 30000 blits of a specific texture size and time it using Linux/bash&#39;s time command.</p><p>But here&#39;s the problem, and I&#39;m considering making a StackOverflow post about it but I couldn&#39;t find ANYONE with the problem.</p><p>SOMETIMES, when I run:</p><div class="source-code snippet"><div class="inner"><pre> $ <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> .<span class="k3">/</span>myprogram
</pre></div></div><p>
It&#39;ll be 5-10 seconds. Other times <u>with the same program</u> it&#39;ll report close to .5 seconds which is FAR lower than it actually is. Almost like it&#39;s timing a thread other than the main thread, and that other thread is just idling.</p><p>Here&#39;s the actual output:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>$ <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> .<span class="k3">/</span>speedtest
<span class="number">  2</span>
<span class="number">  3</span><span class="k2">[</span>init<span class="k2">]</span> Start up.
<span class="number">  4</span>Maximum texture size reported to Allegro is <span class="n">8192</span>
<span class="number">  5</span>WARNING <span class="k3">-</span> Size <span class="n">16384</span>^<span class="n">2</span> is a MEMORY <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">!</span> 
<span class="number">  6</span><span class="k2">[</span>init<span class="k2">]</span> End.
<span class="number">  7</span><span class="k2">[</span>execute<span class="k2">]</span> Start up.
<span class="number">  8</span><span class="k2">[</span>execute<span class="k2">]</span> End.
<span class="number">  9</span><span class="k2">[</span>shutdown<span class="k2">]</span> Start up.
<span class="number"> 10</span><span class="k2">[</span>shutdown<span class="k2">]</span> End.
<span class="number"> 11</span>
<span class="number"> 12</span>real  <span class="n">0</span>m0.919s <span class="c">//&lt;------- WRONG</span>
<span class="number"> 13</span>user  <span class="n">0</span>m0.544s
<span class="number"> 14</span>sys  <span class="n">0</span>m0.244s
<span class="number"> 15</span>
<span class="number"> 16</span>$ <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a> .<span class="k3">/</span>speedtest
<span class="number"> 17</span><span class="k2">[</span>init<span class="k2">]</span> Start up.
<span class="number"> 18</span>Maximum texture size reported to Allegro is <span class="n">8192</span>
<span class="number"> 19</span>WARNING <span class="k3">-</span> Size <span class="n">16384</span>^<span class="n">2</span> is a MEMORY <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">!</span> 
<span class="number"> 20</span><span class="k2">[</span>init<span class="k2">]</span> End.
<span class="number"> 21</span><span class="k2">[</span>execute<span class="k2">]</span> Start up.
<span class="number"> 22</span><span class="k2">[</span>execute<span class="k2">]</span> End.
<span class="number"> 23</span><span class="k2">[</span>shutdown<span class="k2">]</span> Start up.
<span class="number"> 24</span><span class="k2">[</span>shutdown<span class="k2">]</span> End.
<span class="number"> 25</span>
<span class="number"> 26</span>real  <span class="n">0</span>m20.332s <span class="c">//&lt;-------- Actual</span>
<span class="number"> 27</span>user  <span class="n">0</span>m0.564s
<span class="number"> 28</span>sys  <span class="n">0</span>m0.192s
</div></div><p>

And even then, when I had lower draw call numbers and it was faster, time still <b>felt like it slightly under-reported every time</b>. I would sit there, watch the command that I triggered, and I would feel like it was 5 seconds and it would tell me... ~2.3. And I am NOT that bad at counting seconds. But it&#39;s possible I just miscalculated something. What&#39;s NOT possible is my program magically goes from 20 seconds ... to .5 seconds.</p><p>I have tried both bash&#39;s &quot;time&quot; ($ time ./myprogram) as well as the (POSIX?) /usr/bin/time . Both report the same values as far as I can tell.</p><p>My only thought is that Allegro is running multiple threads and time is reporting the wrong one.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Sun, 11 Jun 2017 11:10:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As I understand it, <span class="source-code"><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a></span> measures the process, so the number of threads should not give a false result.<br />Are you saying the prompt does not return for 20 seconds but it still reports 0.5 seconds? <br />The only thing I can suggest is using the <span class="source-code"><span class="k3">-</span>v</span> flag to <span class="source-code"><span class="k3">/</span>usr<span class="k3">/</span>bin<span class="k3">/</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a></span> or maybe investigate the <span class="source-code">perf</span> command - they might give you some insight on why some runs are different.</p><p>Pete
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Tue, 13 Jun 2017 14:37:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://docs.liballeg.org/time.html#al_get_time">al_get_time</a>. Don&#39;t know what the implementation is on linux, but it should have resolution on the order of milliseconds at least.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 13 Jun 2017 19:21:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I just timed it... on video... with my phone. 11 seconds, yet time reports 1.x seconds. Like it&#39;s off by a factor of 10x.</p><p>Try it yourself! </p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="c">// Completely hobbled together code. It wasn't meant to be elegant, just to test some speeds.</span>
<span class="number">   2</span><span class="c">// You'll need the 'common.c' from the Allegro examples folder.</span>
<span class="number">   3</span>
<span class="number">   4</span><span class="p">#define ALLEGRO_STATICLINK</span>
<span class="number">   5</span>
<span class="number">   6</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   9</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">  10</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  11</span><span class="p">#include &lt;allegro5/allegro_color.h&gt;</span>
<span class="number">  12</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  13</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">  14</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  15</span><span class="p">#include &lt;stdarg.h&gt;</span>
<span class="number">  16</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">  17</span>
<span class="number">  18</span><span class="p">#include "common.c"</span>
<span class="number">  19</span>
<span class="number">  20</span><span class="p">#include &lt;list&gt;</span>
<span class="number">  21</span><span class="p">#include &lt;vector&gt;</span>
<span class="number">  22</span>
<span class="number">  23</span><span class="k1">namespace</span> g
<span class="number">  24</span>  <span class="k2">{</span>
<span class="number">  25</span>  <span class="k1">const</span> <span class="k1">int</span> <a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a> <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span>
<span class="number">  26</span>  <span class="k1">const</span> <span class="k1">int</span> <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span>
<span class="number">  27</span>
<span class="number">  28</span>     <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number">  29</span>     <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer<span class="k2">;</span>
<span class="number">  30</span>     <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>fps_timer<span class="k2">;</span>
<span class="number">  31</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue<span class="k2">;</span>
<span class="number">  32</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">;</span>
<span class="number">  33</span>  <span class="k1">const</span> <span class="k1">float</span> LOGIC_FPS <span class="k3">=</span> <span class="n">60</span><span class="k2">;</span>
<span class="number">  34</span>  
<span class="number">  35</span>  <span class="c">//framerate time keeping</span>
<span class="number">  36</span>  <span class="k1">int</span> frames_passed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>   
<span class="number">  37</span>  <span class="k1">int</span> fps <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  38</span>  
<span class="number">  39</span>  
<span class="number">  40</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>current_screen<span class="k2">;</span>
<span class="number">  41</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>fake_map<span class="k2">;</span>
<span class="number">  42</span>  <span class="k2">}</span><span class="k2">;</span>
<span class="number">  43</span>
<span class="number">  44</span><span class="k1">using</span> <span class="k1">namespace</span> g<span class="k2">;</span>
<span class="number">  45</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">  46</span>
<span class="number">  47</span><span class="c">//forward declarations</span>
<span class="number">  48</span><span class="k1">class</span> map_chunk_t<span class="k2">;</span>
<span class="number">  49</span><span class="k1">class</span> guessing_algorithm_t<span class="k2">;</span>
<span class="number">  50</span>
<span class="number">  51</span><span class="k1">enum</span> MYKEYS <span class="k2">{</span>
<span class="number">  52</span>   KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT,
<span class="number">  53</span>   KEY_W, KEY_S, KEY_A, KEY_D, KEY_C, KEY_P
<span class="number">  54</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  55</span>
<span class="number">  56</span><span class="k1">int</span> number_of_draws_per_second <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  57</span><span class="k1">int</span> number_of_draws <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  58</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>test_blit_512<span class="k2">;</span>
<span class="number">  59</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>test_blit_1024<span class="k2">;</span>
<span class="number">  60</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>test_blit_2048<span class="k2">;</span>
<span class="number">  61</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>test_blit_4096<span class="k2">;</span>
<span class="number">  62</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>test_blit_8192<span class="k2">;</span>
<span class="number">  63</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>test_blit_16384<span class="k2">;</span>
<span class="number">  64</span>
<span class="number">  65</span><span class="k1">void</span> run_test<span class="k2">(</span><span class="k1">int</span> size, <span class="k1">int</span> count<span class="k2">)</span>
<span class="number">  66</span>  <span class="k2">{</span>
<span class="number">  67</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>source<span class="k2">;</span>
<span class="number">  68</span>  
<span class="number">  69</span>  <span class="k1">if</span><span class="k2">(</span>size <span class="k3">=</span><span class="k3">=</span> <span class="n">512</span><span class="k2">)</span><span class="k2">{</span>source <span class="k3">=</span> test_blit_512<span class="k2">;</span><span class="k2">}</span>
<span class="number">  70</span>  <span class="k1">if</span><span class="k2">(</span>size <span class="k3">=</span><span class="k3">=</span> <span class="n">1024</span><span class="k2">)</span><span class="k2">{</span>source <span class="k3">=</span> test_blit_1024<span class="k2">;</span><span class="k2">}</span>
<span class="number">  71</span>  <span class="k1">if</span><span class="k2">(</span>size <span class="k3">=</span><span class="k3">=</span> <span class="n">2048</span><span class="k2">)</span><span class="k2">{</span>source <span class="k3">=</span> test_blit_2048<span class="k2">;</span><span class="k2">}</span>
<span class="number">  72</span>  <span class="k1">if</span><span class="k2">(</span>size <span class="k3">=</span><span class="k3">=</span> <span class="n">4096</span><span class="k2">)</span><span class="k2">{</span>source <span class="k3">=</span> test_blit_4096<span class="k2">;</span><span class="k2">}</span>
<span class="number">  73</span>  <span class="k1">if</span><span class="k2">(</span>size <span class="k3">=</span><span class="k3">=</span> <span class="n">8192</span><span class="k2">)</span><span class="k2">{</span>source <span class="k3">=</span> test_blit_8192<span class="k2">;</span><span class="k2">}</span>
<span class="number">  74</span>  <span class="k1">if</span><span class="k2">(</span>size <span class="k3">=</span><span class="k3">=</span> <span class="n">16384</span><span class="k2">)</span><span class="k2">{</span>source <span class="k3">=</span> test_blit_16384<span class="k2">;</span><span class="k2">}</span>
<span class="number">  75</span>  
<span class="number">  76</span>  <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> count<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  77</span>    <span class="k2">{</span>
<span class="number">  78</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>source, <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">320</span>, <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">240</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>    number_of_draws<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  80</span>    <span class="k2">}</span>
<span class="number">  81</span>  
<span class="number">  82</span>
<span class="number">  83</span>  <span class="k2">}</span>
<span class="number">  84</span>
<span class="number">  85</span><span class="k1">int</span> initialize<span class="k2">(</span><span class="k2">)</span>
<span class="number">  86</span>  <span class="k2">{</span>
<span class="number">  87</span>
<span class="number">  88</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  89</span>    abort_example<span class="k2">(</span><span class="s">"Could not init Allegro.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>  <span class="k2">}</span>
<span class="number">  91</span>
<span class="number">  92</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>  <a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>  <a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>  <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>  init_platform_specific<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>
<span class="number">  99</span>  g::display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">800</span>, <span class="n">600</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>g::display<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 101</span>    abort_example<span class="k2">(</span><span class="s">"Error creating display\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>    <span class="k2">}</span>
<span class="number"> 103</span>   
<span class="number"> 104</span>  timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> g::LOGIC_FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span>  fps_timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</span>
<span class="number"> 107</span>  g::queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>g::queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>g::queue, <a href="http://www.allegro.cc/manual/al_get_mouse_event_source"><span class="a">al_get_mouse_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>g::queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>g::queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>g::queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>fps_timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>
<span class="number"> 114</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>g::timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>g::fps_timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</span>
<span class="number"> 117</span>  g::font <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_font"><span class="a">al_load_font</span></a><span class="k2">(</span><span class="s">"DejaVuSans.ttf"</span>, <span class="n">16</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>  <span class="k1">if</span><span class="k2">(</span>g::font <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"OH SHIT FONT NOT FOUND OR FAILED TO LOAD.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 119</span>
<span class="number"> 120</span><span class="c">// PNGS and JPEGS are tested to work.</span>
<span class="number"> 121</span><span class="c">//  fake_map = al_load_bitmap("./maps/SecretofMana_map_gaiasnavel.png");</span>
<span class="number"> 122</span>  fake_map <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"./maps/EarthboundMapDustyDunesDesert.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>  current_screen <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">320</span>, <span class="n">200</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//= al_load_bitmap("screen_view.png");</span>
<span class="number"> 124</span>
<span class="number"> 125</span>  test_blit_512 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">512</span>, <span class="n">512</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 126</span>  test_blit_1024 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">1024</span>, <span class="n">1024</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>  test_blit_2048 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">2048</span>, <span class="n">2048</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 128</span>  test_blit_4096 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">4096</span>, <span class="n">4096</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 129</span>  test_blit_8192 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">8192</span>, <span class="n">8192</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</span>  test_blit_16384 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">16384</span>, <span class="n">16384</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>  
<span class="number"> 132</span>  
<span class="number"> 133</span>  <span class="k1">int</span> MAX_TEX <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_option"><span class="a">al_get_display_option</span></a><span class="k2">(</span>g::display, ALLEGRO_MAX_BITMAP_SIZE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 134</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Maximum texture size reported to Allegro is %i\n"</span>, MAX_TEX<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 135</span>
<span class="number"> 136</span>
<span class="number"> 137</span>  <span class="k1">if</span><span class="k2">(</span>test_blit_4096 <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span><span class="k2">{</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Can't make a 4096x4096 bitmap.\n"</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 138</span>  <span class="k1">if</span><span class="k2">(</span>test_blit_8192 <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span><span class="k2">{</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Can't make a 8192x8192 bitmap.\n"</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 139</span>  <span class="k1">if</span><span class="k2">(</span>test_blit_16384 <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span><span class="k2">{</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Can't make a 16384x16384 bitmap.\n"</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 140</span>
<span class="number"> 141</span>
<span class="number"> 142</span>  <span class="k1">int</span> x<span class="k2">;</span>
<span class="number"> 143</span>  <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>x <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_flags"><span class="a">al_get_bitmap_flags</span></a><span class="k2">(</span>test_blit_2048<span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span> ALLEGRO_MEMORY_BITMAP<span class="k2">)</span>
<span class="number"> 144</span>    <span class="k2">{</span>
<span class="number"> 145</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"WARNING - Size 2048^2 is a MEMORY BITMAP! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>    <span class="k2">}</span>
<span class="number"> 147</span>  <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>x <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_flags"><span class="a">al_get_bitmap_flags</span></a><span class="k2">(</span>test_blit_4096<span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span> ALLEGRO_MEMORY_BITMAP<span class="k2">)</span>
<span class="number"> 148</span>    <span class="k2">{</span>
<span class="number"> 149</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"WARNING - Size 4096^2 is a MEMORY BITMAP! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 150</span>    <span class="k2">}</span>
<span class="number"> 151</span>  <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>x <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_flags"><span class="a">al_get_bitmap_flags</span></a><span class="k2">(</span>test_blit_8192<span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span> ALLEGRO_MEMORY_BITMAP<span class="k2">)</span>
<span class="number"> 152</span>    <span class="k2">{</span>
<span class="number"> 153</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"WARNING - Size 8192^2 is a MEMORY BITMAP! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 154</span>    <span class="k2">}</span>
<span class="number"> 155</span>  <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>x <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_flags"><span class="a">al_get_bitmap_flags</span></a><span class="k2">(</span>test_blit_16384<span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span> ALLEGRO_MEMORY_BITMAP<span class="k2">)</span>
<span class="number"> 156</span>    <span class="k2">{</span>
<span class="number"> 157</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"WARNING - Size 16384^2 is a MEMORY BITMAP! \n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>    <span class="k2">}</span>
<span class="number"> 159</span>  
<span class="number"> 160</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 161</span>  <span class="k2">}</span>
<span class="number"> 162</span>
<span class="number"> 163</span><span class="k1">void</span> shutdown<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 164</span>  <span class="k2">{</span>
<span class="number"> 165</span>  <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>g::queue<span class="k2">)</span><span class="k2">;</span>  
<span class="number"> 166</span>  <span class="k2">}</span>
<span class="number"> 167</span>
<span class="number"> 168</span><span class="k1">void</span> execute2<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 169</span>  <span class="k2">{</span>
<span class="number"> 170</span>  run_test<span class="k2">(</span><span class="n">1024</span>, <span class="n">30000</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 171</span>  <span class="k2">}</span>
<span class="number"> 172</span>
<span class="number"> 173</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span>
<span class="number"> 174</span>  <span class="k2">{</span>
<span class="number"> 175</span>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"[init] Start up."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 176</span>  initialize<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 177</span>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"[init] End."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 178</span>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"[execute] Start up."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 179</span>
<span class="number"> 180</span>
<span class="number"> 181</span> execute2<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 182</span>
<span class="number"> 183</span>
<span class="number"> 184</span>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"[execute] End."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 185</span>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"[shutdown] Start up."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 186</span>  shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 187</span>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"[shutdown] End."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 188</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 189</span>  <span class="k2">}</span>
</div></div><p>

And the build file--though yours should work fine. For some reason I&#39;ve always had problems doing it the &quot;proper&quot; way with the package config utility on this laptop.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>clang<span class="k3">+</span><span class="k3">+</span> speedtest.cpp <span class="k3">-</span>o speedtest <span class="k3">-</span>fcolor-diagnostics  <span class="k3">-</span>O3  \
<span class="number">  2</span><span class="k3">-</span>I<span class="k3">/</span>usr<span class="k3">/</span>local<span class="k3">/</span>include<span class="c">/**   \</span>
<span class="number">  3</span><span class="c">-I/usr/local/include/allegro5/**   \</span>
<span class="number">  4</span><span class="c">-lallegro_monolith-static   \</span>
<span class="number">  5</span><span class="c">-lpthread  \</span>
<span class="number">  6</span><span class="c">-lGL \</span>
<span class="number">  7</span><span class="c">-lGLU \</span>
<span class="number">  8</span><span class="c">-lXcursor \</span>
<span class="number">  9</span><span class="c">-lXi \</span>
<span class="number"> 10</span><span class="c">-lXrandr \</span>
<span class="number"> 11</span><span class="c">-lX11 \</span>
<span class="number"> 12</span><span class="c">-lXinerama \</span>
<span class="number"> 13</span><span class="c">-lz \</span>
<span class="number"> 14</span><span class="c">-lpng \</span>
<span class="number"> 15</span><span class="c">-ljpeg  \</span>
<span class="number"> 16</span><span class="c">-lfreetype</span>
</div></div><p>

FYI, I imagine I can time it other ways like with the internal allegro timer. My question here is because I&#39;ve only seen it do this with my Allegro program(s) and I couldn&#39;t find a SO answer even remotely describing the problem. Perhaps I&#39;ll ask on Stack Overflow after all...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Tue, 13 Jun 2017 19:33:40 +0000</pubDate>
	</item>
</rss>
