ПрограммированиеФорумОбщее

[C++] Быстрая проверка области памяти на предмет равенства значению. (4 стр)

Страницы: 1 2 3 4
#45
19:50, 10 янв 2011

RaZOR
> > а с __int64 что будет ?
> а он ему нужен? или что ты имеешь ввиду?

какой asm выхлоп будет от __int64 ?

#46
20:02, 10 янв 2011

innuendo
> какой asm выхлоп будет от __int64 ?
что будет? будут лишние mov-ы и по два or вместо одного, т.к. __int64 не влезет в 32 битные регистры. ему надо уменьшать битность и анролить, а ты наоборот. я не улавливаю хода твоих мыслей. :)

правка: все вышесказанное относится к 32 битной системе, на 64 битах будут(должны?) использоваться 64бит регистры.

#47
20:06, 10 янв 2011

RaZOR
покажи выхлоп

#48
20:22, 10 янв 2011

innuendo
полегче давай, ага? я тут у тебя ничего не просил, если что.

тот же цикл, 32бита, 64бит компилера нету.

    b0 |= mas[i + 0];
00831040  mov         edi,dword ptr [esp+eax*8+2Ch]  
00831044  or          dword ptr [esp+1Ch],edi  
    b1 |= mas[i + 1];
00831048  mov         edi,dword ptr [esp+eax*8+30h]  
0083104C  or          dword ptr [esp+10h],edi  
00831050  mov         edi,dword ptr [esp+eax*8+34h]  
00831054  or          dword ptr [esp+14h],edi  
    b2 |= mas[i + 2];
00831058  mov         edi,dword ptr [esp+eax*8+38h]  
0083105C  or          dword ptr [esp+8],edi  
00831060  mov         edi,dword ptr [esp+eax*8+3Ch]  
00831064  or          esi,dword ptr [esp+eax*8+28h]  
00831068  or          dword ptr [esp+0Ch],edi  
    b3 |= mas[i + 3];
0083106C  or          ecx,dword ptr [esp+eax*8+40h]  
00831070  or          edx,dword ptr [esp+eax*8+44h]  
00831074  add         eax,4  
00831077  adc         dword ptr [esp+24h],0  
0083107C  js          main+40h (831040h)  
  for(; i < size; i += 4) {
0083107E  jg          main+87h (831087h)  
00831080  cmp         eax,0FA0h  
00831085  jb          main+40h (831040h)  
  }
#49
20:33, 10 янв 2011

RaZOR
> полегче давай, ага? я тут у тебя ничего не просил, если что.

извини,  я забыл слово пожалуйста :)

#50
20:34, 10 янв 2011

innuendo
> извини,  я забыл слово пожалуйста :)
ок, по делу что думаешь? :)

#51
20:48, 10 янв 2011

RaZOR
> ок, по делу что думаешь? :)

а если сравнить по времени _int64 с int32 и bool ?

#52
20:58, 10 янв 2011

innuendo
> а если сравнить по времени _int64 с int32 и bool ?
это уже к топикстартеру, он тут тесты делает...

#53
21:09, 10 янв 2011

RaZOR
Я тут уже не причем, моя проблема пару страниц назад решилась.

#54
21:21, 10 янв 2011

RaZOR
> тот же цикл, 32бита,

RaZOR
> и анролить

вот тебе и unrolling c __int64  по сравнению с int32

#55
2:28, 13 янв 2011

Pushkoff
> к этому нет доступа из UserMode

а всетки зацепка есть GetWriteWatch - http://msdn.microsoft.com/en-us/library/aa366573%28v=vs.85%29.aspx
при определенных условия можно заюзать.

Страницы: 1 2 3 4
ПрограммированиеФорумОбщее

Тема в архиве.