第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

倒數比倒數快嗎?

倒數比倒數快嗎?

UYOU 2019-11-25 10:45:29
我們的計算機科學老師曾經說過,由于某種原因,倒數比倒數更有效。例如,如果您需要使用FOR循環(huán),而循環(huán)索引未在某處使用(例如在屏幕上打印N *行),則表示這樣的代碼:for (i = N; i >= 0; i--)    putchar('*');  優(yōu)于:for (i = 0; i < N; i++)    putchar('*');  是真的嗎 如果是這樣,有人知道為什么嗎?
查看完整描述

3 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

是真的嗎 如果是這樣,有人知道為什么嗎?

在遠古時代,當仍然用手從熔融硅石中切出計算機,8位微控制器在地球上漫游以及您的老師年輕(或您的老師的老師年輕)時,就有一條通用的機器指令稱為減量和跳過如果為零(DSZ)。熱門匯編程序員使用此指令來實現循環(huán)。后來的機器得到了更奇妙的指令,但是仍然有很多處理器在上面比較零的東西比與其他東西比較便宜。(即使在某些現代RISC機器(例如PPC或SPARC)上也是如此,它們保留整個寄存器始終為零。)

因此,如果將循環(huán)綁定為零而不是N,那會發(fā)生什么?

  • 您可以保存注冊

  • 您可能會使用較小的二進制編碼獲得比較指令

  • 如果前面的指令碰巧設置了一個標志(可能僅在x86系列機器上),則您甚至可能不需要顯式的比較指令。

這些差異是否可能導致對現代亂序處理器上的真實程序進行任何可衡量的改進?不大可能。實際上,即使您在微基準測試上也能表現出可衡量的改進,我會印象深刻。

摘要:我拍了一下你的老師腦袋! 您不應該學習有關如何組織循環(huán)的過時的偽事實。您應該了解,關于循環(huán)的最重要的事情是確保循環(huán)終止,產生正確的答案并且易于閱讀 我希望您的老師將重點放在重要的東西上,而不是神話。


查看完整回答
反對 回復 2019-11-25
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

以下是某些硬件上可能發(fā)生的情況,具體取決于編譯器可以推斷出所用數字的范圍:使用遞增循環(huán),您i<N每次循環(huán)時都必須進行測試。對于減量版本,進位標志(設置為減法的副作用)可能會自動告訴您是否i>=0。這樣可以節(jié)省循環(huán)時間的測試時間。

實際上,在現代流水線處理器硬件上,由于沒有從指令到時鐘周期的簡單1-1映射,因此這些東西幾乎可以說是無關緊要的。(盡管我可以想象,如果您正在執(zhí)行諸如從微控制器生成精確定時的視頻信號之類的事情的話,但是無論如何您還是會用匯編語言編寫。)


查看完整回答
反對 回復 2019-11-25
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

在Intel x86指令集中,構建循環(huán)以遞減計數到零的過程通常比以循環(huán)計數到非零退出條件的循環(huán)要少。具體來說,ECX寄存器傳統上用作x86 asm中的循環(huán)計數器,并且Intel指令集具有特殊的jcxz跳轉指令,該指令會測試ECX寄存器是否為零并根據測試結果進行跳轉。

但是,除非您的循環(huán)對時鐘周期計數非常敏感,否則性能差異可以忽略不計。與遞增計數相比,遞減計數到零可能會使循環(huán)的每個迭代減少4或5個時鐘周期,因此,它實際上是新穎的事物,而不是有用的技術。

另外,如今,一個好的優(yōu)化編譯器應該能夠將向上計數的循環(huán)源代碼轉換為向下計數的零機器代碼(取決于您使用循環(huán)索引變量的方式),因此實際上沒有任何理由要在其中編寫循環(huán)只是在這里和那里擠壓一個或兩個周期的奇怪方法。


查看完整回答
反對 回復 2019-11-25
  • 3 回答
  • 0 關注
  • 722 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號