Farseerfc的小窩 - microsoft//farseerfc.me/2011-03-14T20:34:00+09:00“…if we do this work … ” --Bill Gates2011-03-14T20:34:00+09:002011-03-14T20:34:00+09:00farseerfctag:farseerfc.me,2011-03-14:/if-we-do-this-work.html<p>導入自
<a class="reference external" href="http://blog.renren.com/blog/230263946/716517729">renren</a></p>
<p>From: Bill Gates</p>
<p>’-- Sent: Sunday, January 24, 1999 8:41 AM</p>
<p>Jeff Westorinon; Ben Fathi ;</p>
<p>TO: Carl Stork (Exchange); Nathan Myhrvofd; Eric Rudder</p>
<p>Subject: ACPI extensions</p>
<p>One thing I find myself wondering about is whether we shouldn’t try and
make the "ACPI" extensions somehow Windows specific.</p>
<p>It …</p><p>導入自
<a class="reference external" href="http://blog.renren.com/blog/230263946/716517729">renren</a></p>
<p>From: Bill Gates</p>
<p>’-- Sent: Sunday, January 24, 1999 8:41 AM</p>
<p>Jeff Westorinon; Ben Fathi ;</p>
<p>TO: Carl Stork (Exchange); Nathan Myhrvofd; Eric Rudder</p>
<p>Subject: ACPI extensions</p>
<p>One thing I find myself wondering about is whether we shouldn’t try and
make the "ACPI" extensions somehow Windows specific.</p>
<p>It seems unfortunate if we do this work and get our partners to do the
work and the result is that <strong>Linux works great without having to do the work</strong>.</p>
<p><strong>Maybe there is no way to avoid this problem but it does bother me.</strong></p>
<p>Maybe we could define the APIs so that they work well with NT and not
the others even if they are open.</p>
<p>Or maybe we could patent something relaled to this.</p>
<p>From:</p>
<p><a class="reference external" href="http://antitrust.slated.org/www.iowaconsumercase.org/011607/3000/PX03020.pdf">http://antitrust.slated.org/www.iowaconsumercase.org/011607/3000/PX03020.pdf</a></p>
<p>如果這就是我至今在Xen4.0上得不到ACPI 3.0的完善支持的原因,那麼我詛咒Bill Gates!</p>
寫程序讓CPU佔用率保持正弦函數2008-06-02T23:27:00+09:002008-06-02T23:27:00+09:00farseerfctag:farseerfc.me,2008-06-02:/sine-cpu.html<p>導入自
<a class="reference external" href="http://blog.renren.com/blog/230263946/298871889">renren</a></p>
<p>據說是一道微軟的面試題。如題,寫程序,讓Windows的任務管理器中的性能監視器呈現正弦曲線。</p>
<img alt="正弦曲線" class="img-responsive align-center" src="http://fm531.img.xiaonei.com/pic001/20080602/23/14/large_10019p67.jpg"/>
<img alt="正弦曲線" class="img-responsive align-center" src="http://fm541.img.xiaonei.com/pic001/20080602/23/14/large_9935o67.jpg"/>
<!-- PELICAN_END_SUMMARY -->
<p>潛心鑽研良久,得代碼:(java)</p>
<div class="highlight"><pre><span class="code-line"><span></span><span class="kd">public</span> <span class="kd">class</span> <span class="nc">sincpu</span> <span class="p">{</span></span>
<span class="code-line"> <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">cycle</span><span class="o">=</span><span class="mi">1024</span><span class="p">,</span><span class="n">tick</span> <span class="o">=</span> <span class="mi">256</span><span class="p">;</span></span>
<span class="code-line"> <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span> <span class="p">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">InterruptedException</span> <span class="p">{</span></span>
<span class="code-line"> <span class="k">for</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;;</span><span class="n">i</span><span class="o">++</span><span class="p">){</span></span>
<span class="code-line"> <span class="n">work</span><span class="p">(</span><span class="n">calcNextSleep</span><span class="p">(</span><span class="n">i</span> <span class="o">%</span> <span class="n">cycle</span><span class="p">));</span></span>
<span class="code-line"> <span class="n">sleep</span><span class="p">(</span><span class="n">tick</span> <span class="o">-</span> <span class="n">calcNextSleep</span><span class="p">(</span><span class="n">i</span> <span class="o">%</span> <span class="n">cycle</span><span class="p">));</span></span>
<span class="code-line"> <span class="p">}</span></span>
<span class="code-line"> <span class="p">}</span></span>
<span class="code-line"></span>
<span class="code-line"> <span class="kd">private</span> <span class="kd">static</span> <span class="kt">long</span> <span class="nf">calcNextSleep</span><span class="p">(</span><span class="kt">long</span> <span class="n">i</span><span class="p">){</span></span>
<span class="code-line"> <span class="k">return</span> <span class="p">(</span><span class="kt">int …</span></span></pre></div><p>導入自
<a class="reference external" href="http://blog.renren.com/blog/230263946/298871889">renren</a></p>
<p>據說是一道微軟的面試題。如題,寫程序,讓Windows的任務管理器中的性能監視器呈現正弦曲線。</p>
<img alt="正弦曲線" class="img-responsive align-center" src="http://fm531.img.xiaonei.com/pic001/20080602/23/14/large_10019p67.jpg"/>
<img alt="正弦曲線" class="img-responsive align-center" src="http://fm541.img.xiaonei.com/pic001/20080602/23/14/large_9935o67.jpg"/>
<!-- PELICAN_END_SUMMARY -->
<p>潛心鑽研良久,得代碼:(java)</p>
<div class="highlight"><pre><span class="code-line"><span></span><span class="kd">public</span> <span class="kd">class</span> <span class="nc">sincpu</span> <span class="p">{</span></span>
<span class="code-line"> <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">cycle</span><span class="o">=</span><span class="mi">1024</span><span class="p">,</span><span class="n">tick</span> <span class="o">=</span> <span class="mi">256</span><span class="p">;</span></span>
<span class="code-line"> <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span> <span class="p">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">InterruptedException</span> <span class="p">{</span></span>
<span class="code-line"> <span class="k">for</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;;</span><span class="n">i</span><span class="o">++</span><span class="p">){</span></span>
<span class="code-line"> <span class="n">work</span><span class="p">(</span><span class="n">calcNextSleep</span><span class="p">(</span><span class="n">i</span> <span class="o">%</span> <span class="n">cycle</span><span class="p">));</span></span>
<span class="code-line"> <span class="n">sleep</span><span class="p">(</span><span class="n">tick</span> <span class="o">-</span> <span class="n">calcNextSleep</span><span class="p">(</span><span class="n">i</span> <span class="o">%</span> <span class="n">cycle</span><span class="p">));</span></span>
<span class="code-line"> <span class="p">}</span></span>
<span class="code-line"> <span class="p">}</span></span>
<span class="code-line"></span>
<span class="code-line"> <span class="kd">private</span> <span class="kd">static</span> <span class="kt">long</span> <span class="nf">calcNextSleep</span><span class="p">(</span><span class="kt">long</span> <span class="n">i</span><span class="p">){</span></span>
<span class="code-line"> <span class="k">return</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">Math</span><span class="p">.</span><span class="na">sin</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">i</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">Math</span><span class="p">.</span><span class="na">PI</span> <span class="o">/</span> <span class="n">cycle</span><span class="p">)</span> <span class="o">*</span> <span class="n">tick</span> <span class="o">+</span> <span class="n">tick</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span></span>
<span class="code-line"> <span class="p">}</span></span>
<span class="code-line"></span>
<span class="code-line"> <span class="kd">private</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">sleep</span> <span class="p">(</span><span class="kt">long</span> <span class="n">sleepTime</span><span class="p">)</span> <span class="kd">throws</span> <span class="n">InterruptedException</span></span>
<span class="code-line"> <span class="p">{</span></span>
<span class="code-line"> <span class="k">if</span><span class="p">(</span><span class="n">sleepTime</span> <span class="o"><</span> <span class="mi">2</span><span class="p">)</span></span>
<span class="code-line"> <span class="n">Thread</span><span class="p">.</span><span class="na">yield</span><span class="p">();</span></span>
<span class="code-line"> <span class="k">else</span></span>
<span class="code-line"> <span class="n">Thread</span><span class="p">.</span><span class="na">sleep</span><span class="p">(</span><span class="n">sleepTime</span><span class="p">);</span></span>
<span class="code-line"> <span class="p">}</span></span>
<span class="code-line"></span>
<span class="code-line"> <span class="kd">private</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">work</span> <span class="p">(</span><span class="kt">long</span> <span class="n">period</span><span class="p">)</span> <span class="p">{</span></span>
<span class="code-line"> <span class="kt">long</span> <span class="n">start</span> <span class="o">=</span> <span class="n">System</span><span class="p">.</span><span class="na">currentTimeMillis</span><span class="p">();</span></span>
<span class="code-line"> <span class="k">for</span><span class="p">(;;){</span></span>
<span class="code-line"> <span class="n">Math</span><span class="p">.</span><span class="na">sin</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span></span>
<span class="code-line"> <span class="k">if</span><span class="p">(</span><span class="n">System</span><span class="p">.</span><span class="na">currentTimeMillis</span><span class="p">()</span> <span class="o">-</span> <span class="n">start</span> <span class="o">>=</span> <span class="n">period</span><span class="p">)</span></span>
<span class="code-line"> <span class="k">break</span><span class="p">;</span></span>
<span class="code-line"> <span class="p">}</span></span>
<span class="code-line"> <span class="p">}</span></span>
<span class="code-line"><span class="p">}</span></span>
</pre></div>
<p>多核CPU上測試時要注意關掉一個CPU:</p>
<img alt="多核CPU上測試" class="img-responsive align-center" src="http://fm411.img.xiaonei.com/pic001/20080602/23/14/large_9946k67.jpg"/>