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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么使用整數(shù)而不是長?

為什么使用整數(shù)而不是長?

為什么使用整數(shù)而不是長?我經(jīng)??吹絆verflow與vba錯(cuò)誤有關(guān)的問題。我的問題是為什么使用integer變量聲明而不是僅僅定義所有數(shù)值變量(不包括double等)long?除非您正在執(zhí)行類似for循環(huán)的操作,您可以保證該值不會(huì)超過32,767的限制,否則是否會(huì)對(duì)性能產(chǎn)生影響或其他會(huì)導(dǎo)致不使用long?
查看完整描述

4 回答

?
飲歌長嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

即使這篇文章已有四年歷史了,我對(duì)此感到好奇并進(jìn)行了一些測試。最重要的是要注意編碼器應(yīng)該始終將變量聲明為SOMETHING。未申報(bào)的變量顯然表現(xiàn)最差(技術(shù)上未申報(bào)Variant

Long確實(shí)表現(xiàn)最快,所以我不得不認(rèn)為微軟總是建議使用Long而不是Integer有意義。我猜測也是如此Byte,但大多數(shù)程序員都沒有使用它。

64位WINDOWS 10 LAPTOP的結(jié)果


使用代碼:

Sub VariableOlymics()'Run this macro as many times as you'd like, with an activesheet ready for data'in cells B2 to D6Dim beginTIME As
 Double, trials As Long, i As Long, p As Long

    trials = 1000000000
    p = 0

    beginTIME = Now    For i = 1 To trials        Call boomBYTE    Next i    Call Finished(p, Now - beginTIME, CDbl(trials))
    p = p + 1

    beginTIME = Now    For i = 1 To trials        Call boomINTEGER    Next i    Call Finished(p, Now - beginTIME, CDbl(trials))
    p = p + 1


    beginTIME = Now    For i = 1 To trials        Call boomLONG    Next i    Call Finished(p, Now - beginTIME, CDbl(trials))
    p = p + 1


    beginTIME = Now    For i = 1 To trials        Call boomDOUBLE    Next i    Call Finished(p, Now - beginTIME, CDbl(trials))
    p = p + 1


    beginTIME = Now    For i = 1 To trials        Call boomUNDECLARED    Next i    Call Finished(p, Now - beginTIME, CDbl(trials))
    p = p + 1End SubPrivate Sub boomBYTE()Dim a As Byte, b As Byte, c As Byte

    a = 1
    b = 1 + a
    c = 1 + b
    c = c + 1End SubPrivate Sub boomINTEGER()Dim a As Integer, b As Integer, c As Integer

    a = 1
    b = 1 + a
    c = 1 + b
    c = c + 1End SubPrivate Sub boomLONG()Dim a As Long, b As Long, c As Long

    a = 1
    b = 1 + a
    c = 1 + b
    c = c + 1End SubPrivate Sub boomDOUBLE()Dim a As Double, b As Double, c As Double

    a = 1
    b = 1 + a
    c = 1 + b
    c = c + 1End SubPrivate Sub boomUNDECLARED()

    a = 1
    b = 1 + a
    c = 1 + b
    c = c + 1End SubPrivate Sub Finished(i As Long, timeUSED As Double, trials As Double)

    With Range("B2").Offset(i, 0)
            .Value = .Value + trials            .Offset(0, 1).Value = .Offset(0, 1).Value + timeUSED            
            .Offset(0, 2).FormulaR1C1 = "=ROUND(RC[-1]*3600*24,0)"
    End WithEnd Sub


查看完整回答
反對(duì) 回復(fù) 2019-05-25
  • 4 回答
  • 0 關(guān)注
  • 753 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)