Перейти к содержанию
Asterios

Сильная загрузка процессора линейкой...


AngelioS

Рекомендуемые сообщения

Вопрос такой...запускаю линейку - проц сразу грузиться на 50-58% и не опускаеться ниже, когде же оставить окно, но активным сделать окно аськи или диспетчер задач на фоне линейки - нагрузка проца сразу до 4-8% опускаеться... Вопрос такой, почему при открытом окне линейки проц грузиться на 50%+ и не опускаеться ниже... приоритет и работу только на 1 ядре ставил результата не дало...  можно ли это исправить и если да то как ?

P.S. Проц AMD X2 6000+

Ссылка на комментарий
Поделиться на другие сайты

счистливый у мну на 100 сразу :(, а админ уже говорил, что компы пора менять :'(

Ссылка на комментарий
Поделиться на другие сайты

Еще одно... в Опциях Аудиосистема если убрать галочку Снижать нагрузку в фоновом редиме - то те манипуляцию коорые описал выше не работают, проц напостой 50%+ нагружаеться... будь то 1 или 2 окна...

P.S. Если б проц до 50-55 градусов не грелся было б пох...

Ссылка на комментарий
Поделиться на другие сайты

да это нормально еще. у меня при запуске квипа процессор нагружается на все +75% :D :D

Ссылка на комментарий
Поделиться на другие сайты

Еще одно... в Опциях Аудиосистема если убрать галочку Снижать нагрузку в фоновом редиме - то те манипуляцию коорые описал выше не работают, проц напостой 50%+ нагружаеться... будь то 1 или 2 окна...

P.S. Если б проц до 50-55 градусов не грелся было б пох...

Ты удивлен, что при галочке Снижать нагрузку в фоновом режиме - снижает нагрузку в фоном режиме?

Ссылка на комментарий
Поделиться на другие сайты

Ты удивлен, что при галочке Снижать нагрузку в фоновом режиме - снижает нагрузку в фоном режиме?

Смешно...
Ссылка на комментарий
Поделиться на другие сайты

Вопрос такой...запускаю линейку - проц сразу грузиться на 50-58% и не опускаеться ниже, когде же оставить окно, но активным сделать окно аськи или диспетчер задач на фоне линейки - нагрузка проца сразу до 4-8% опускаеться... Вопрос такой, почему при открытом окне линейки проц грузиться на 50%+ и не опускаеться ниже... приоритет и работу только на 1 ядре ставил результата не дало...  можно ли это исправить и если да то как ?

P.S. Проц AMD X2 6000+

я что то не понимаю сути вопроса, автор ты о чем? тебе мешает то что у тебя проц нагружен? так ты посмотри сколько действий обрабатывает он, сколько графики через себя прогоняет + инет

Ссылка на комментарий
Поделиться на другие сайты

nf// мне бы такие проблемы... тут запускаеш окно линейки + если "не дай Бог" необходимо запустить еще какое-то окно, то это лажище такой будет...  ;D

Ссылка на комментарий
Поделиться на другие сайты

я что то не понимаю сути вопроса, автор ты о чем? тебе мешает то что у тебя проц нагружен? так ты посмотри сколько действий обрабатывает он, сколько графики через себя прогоняет + инет

Вот именно. Повотрюсь еще раз... запущено в окнном режиме окно линейки - загрузка 50%, запусскаю диспетчер задач или открываю сообщение в аське в фоновом режиме(тоесть все то же окно на экране и все так же работает) - нагрузка падает до 0-8%.

P.S. Раньше задротил на х3 сорком ник Aron4uk , так там запускал по 3-4 окна на осадах и на основном бегал более менее, а когад не было осады то отлично бегал без фризов и т.д., а сейчас на хардине будь то 1 окно или 2 окна(больше надо покупать уже за голд) играть не комфортно.. фпс ппц просто...(фишка с утопии про фпс пинг и т.д.. походу именно тот дрын с утопии пришол сюда )  от 1 до 29 в лучшем случае.... на природе где народу поменьше вроде получше но все же... 2 фотки... на первой активное окно линейки, на второй окно линейки в фоновом режиме.

111_thumb.JPG

222_thumb.JPG

Ссылка на комментарий
Поделиться на другие сайты

Вопрос не в том почему снижает при галочке, а в том отчего стока жрет. С учетом того что всякие граф приблуды счас считаются на видеокартовом камне, а не на ЦП. И причем тут трафф и инет к ЦП?

могу пояснить суть проблемы, наши любимые корейцы никогда не умели писать оптимальный код, и уж темболее у них всегда были проблемы с мощными компами (2 и более процессора)

а теперь разжую, вся нагрузка идёт на проц компа,даже видео...

кстати единственное место,где мой фпс отображаемый системой выше 90 - это грация  ;D

на материке адена выше 30 не бывает,нипонятна )))

Ссылка на комментарий
Поделиться на другие сайты

>Вопрос не в том почему снижает при галочке, а в том отчего стока жрет

пле... А СКОЛЬКО ДОЛЖНА ЖРАТЬ ТО?? Методику расчета того сколько должна жрать приложи - обсудим.

А до тех пор - посох...

Enuma Elish

имхо тут вопрос не в кривизне - проц нагружен по максимуму ибо выдает все что может (макс фпс). Вот если проц (в данном случае ядро) будет загружен на половину и фпс будет в 2 раза ниже возможного - вот это будет кривизна.

зы. сколько помню (со времен с3) ла всегда 100% съедала одно ядро.

ззы. комп со встроеным видео (iG41 вроде, целерон 3,3@4.4Ггц) выдает 10-15 фпс, при установке в него 9600GT фпс растет до 30-38 (38 на экране логина), т.е. видеокарта роль играет не малую. Та же 9600GT в паре с q9400@3.6Гг на логине выдает 110 фпс.

Ссылка на комментарий
Поделиться на другие сайты

Бываест и 220+фпс, тебе что мешает както нагрузка проца? Мне строго по.

Ссылка на комментарий
Поделиться на другие сайты

у меня в окне выбора чара 220 фпс  ;D

в 2 окна в более-менее людных локациях до 80 доходит

в ГХ максим 25

играюсь на:

AMD Athlon II x245

DDR2 800Mhz Kingston 2048mb 2 планки

asus GF EN9800GT (512 mb|DDR3)

винт 7200 об/мин, 16 метров кеша

стоит Win7 Pro x64

Ссылка на комментарий
Поделиться на другие сайты

Плюс к теме, такое-же как у автора. На С4 спокойно запускал 7+ окон. Тут еле в 2 окна на минимально режиме. Можно ли как-то оптимизировать нагрузку?

купи себе такое: http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%81%D1%83%D0%BF%D0%B5%D1%80%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80

Ссылка на комментарий
Поделиться на другие сайты

Автор у тебя прог не стоит сейчас никаких которые общую нагрузку по ядрам раскидывают? В основном от этого софта проблемы с загрузкой ЦП.

Ссылка на комментарий
Поделиться на другие сайты

могу пояснить суть проблемы, наши любимые корейцы никогда не умели писать оптимальный код, и уж темболее у них всегда были проблемы с мощными компами (2 и более процессора)

а теперь разжую, вся нагрузка идёт на проц компа,даже видео...

Да ты видать тока в универ пашел учица епта, ты что такое гонишь, причем тут код и корейцы ? :D

Ты знаешь что все это писалось с использованием графических библиотек аля OpenGL, DirectX? а там хоть ты кореец, хоть не кореец эти библиотеки уже сами передают обработку графики на видеокарту, если она такое поддерживает  :P

Ссылка на комментарий
Поделиться на другие сайты

у меня в окне выбора чара 220 фпс  ;D

в 2 окна в более-менее людных локациях до 80 доходит

в ГХ максим 25

это не круто в городах в среднем 90-100 в гх 40-45


Post Merge: [time]29 Ноября 2009, 15:23:45[/time]

но тачёнка у мну убогая Intel Core 2 Duo 3.33G/1333MHz/6M E8600 S775 OEM

хочю себе на НГ подарить Intel Core i7 950 3.06G 4x256Kb/8Mb LGA1366 OEM

по теме 50% нагрузка это норм если у тя не i7 стоит

Shot00004_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Да ты видать тока в универ пашел учица епта, ты что такое гонишь, причем тут код и корейцы ? :D

Ты знаешь что все это писалось с использованием графических библиотек аля OpenGL, DirectX? а там хоть ты кореец, хоть не кореец эти библиотеки уже сами передают обработку графики на видеокарту, если она такое поддерживает  :P

а сам-то?)

злодва писаласть именно под Direct3D (DirectX), т.к. именно эта графическая бибилиотека была более популярна во времена с1. а на ГФ используется та же DirectX, что и во времена С1, просто у нее больше возможностей. но сама эта библиотека написана очень неудачно, т.к. жрет тонны ресурсов как CPU так и GPU. тот же OpenGlOpenAL хавает в разы меньше ресурсов при аналогичной произваодительности/возможностях.

по поводу кривого кода:

любую операцию можно сделать оптимальнее. к примеру a=b*2 будет работать в десяток раз медленнее, чем a=b shl 2 (побайтовый сдвиг влево увеличивает число в 2 раза)

и таких примеров можно привести кучу. плюч к этому некоторые операции можно делать на ассемблере. а корейцы при написании игры, судя по результатам, не особо стремились его оптимизировать (частично из-за невозможности измения unreal engine, на основе которого была построена графическая часть клиента, частично от недостатка времени, которое было выделено на написание клиента). вот и получается что ла2 даже не может толком освобождать память из-под своих ресурсов (тот же вов при загрузке новой локи выкидывает из памяти все ненужные ресурсы от старой). отсюда и нагрузка на комп

Ссылка на комментарий
Поделиться на другие сайты

а сам-то?)

злодва писаласть именно под Direct3D (DirectX), т.к. именно эта графическая бибилиотека была более популярна во времена с1. а на ГФ используется та же DirectX, что и во времена С1, просто у нее больше возможностей. но сама эта библиотека написана очень неудачно, т.к. жрет тонны ресурсов как CPU так и GPU. тот же OpenGlOpenAL хавает в разы меньше ресурсов при аналогичной произваодительности/возможностях.

майкрософтский релиз опенжл очень кривой и хавает ресурсы нерационально. сделано специально, чтобы директХ казался на его фоне канфэткой и покупали его. силиконовский опенжл намного прямее, но его пойди поставь сначала  ;D

автор мог бы уже и догадаться что на серве с бОльшим онлайном будет больше моделек игроков/эффектов и соотв. нагрузка будет больше.

Ссылка на комментарий
Поделиться на другие сайты

а сам-то?)

злодва писаласть именно под Direct3D (DirectX), т.к. именно эта графическая бибилиотека была более популярна во времена с1. а на ГФ используется та же DirectX, что и во времена С1, просто у нее больше возможностей. но сама эта библиотека написана очень неудачно, т.к. жрет тонны ресурсов как CPU так и GPU. тот же OpenGlOpenAL хавает в разы меньше ресурсов при аналогичной произваодительности/возможностях.

Пепец ты нубас, ты даже не знаешь чем DirectX отличаеться от OpenGL, это две графические библиотеки, только DirectX штампует микромягкие, OpenGL спецификации штампуют производители видеокарт, и ну никак у OpenGL не может быть возможностей меньше чем у DirectX, ну да ладно это все оцтой, но ты ведь дальше пошол

по поводу кривого кода:

любую операцию можно сделать оптимальнее. к примеру a=b*2 будет работать в десяток раз медленнее, чем a=b shl 2 (побайтовый сдвиг влево увеличивает число в 2 раза)

:D так вы в пятницу побайтовые сдвиги проходили, да будет тебе известно что на дворе 21 век, и соверменный компилятор умнее чем ты, и оптимизирует эти две конструкции таким образом что в асм коде они будут еквивалентны, при том всем что ты привел неудачный пример с умножением  ^-^

и таких примеров можно привести кучу. плюч к этому некоторые операции можно делать на ассемблере. а корейцы при написании игры, судя по результатам, не особо стремились его оптимизировать (частично из-за невозможности измения unreal engine, на основе которого была построена графическая часть клиента, частично от недостатка времени, которое было выделено на написание клиента). вот и получается что ла2 даже не может толком освобождать память из-под своих ресурсов (тот же вов при загрузке новой локи выкидывает из памяти все ненужные ресурсы от старой). отсюда и нагрузка на комп

Бугога, а ну раскажи какую ты там операцию собрался делать на ассемблере ?  :D ты явно тока на первый курс поступил, на асме нынче пишут драйвера сынок, может по твоему вообще всю Л2 на асм переписать? а че бы и нет, у нас ведь корейский код, а то что эффекты анизотропной фильтрации, бамп маппинг, шейдеры, анимация, ИИ, и т.д. - этож все оцтой, для детей  :D:P умник иди учись, может что путевое из тебя и выйдет  ;P

Ссылка на комментарий
Поделиться на другие сайты

Пепец ты нубас, ты даже не знаешь чем DirectX отличаеться от OpenGL, это две графические библиотеки, только DirectX штампует микромягкие, OpenGL спецификации штампуют производители видеокарт, и ну никак у OpenGL не может быть возможностей меньше чем у DirectX, ну да ладно это все оцтой, но ты ведь дальше пошол :D так вы в пятницу побайтовые сдвиги проходили, да будет тебе известно что на дворе 21 век, и соверменный компилятор умнее чем ты, и оптимизирует эти две конструкции таким образом что в асм коде они будут еквивалентны, при том всем что ты привел неудачный пример с умножением  ^-^

Бугога, а ну раскажи какую ты там операцию собрался делать на ассемблере ?  :D ты явно тока на первый курс поступил, на асме нынче пишут драйвера сынок, может по твоему вообще всю Л2 на асм переписать? а че бы и нет, у нас ведь корейский код, а то что эффекты анизотропной фильтрации, бамп маппинг, шейдеры, анимация, ИИ, и т.д. - этож все оцтой, для детей  :D:P умник иди учись, может что путевое из тебя и выйдет  ;P


//···········································································

// Fast CRC64 (ECMA DLT standard) calculator

// (c) Aleksandr Sharahov 2009

// Free for any use

//···········································································


{$WARN UNSAFE_TYPE OFF}

{$WARN UNSAFE_CODE OFF}

{$WARN UNSAFE_CAST OFF}


unit ShaCrc64Unit;


interface


//For reference/validation only (or for very small buffer)

procedure ReferenceRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);

procedure    NormalRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);

procedure ReflectedRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);


//Use these functions

procedure ShaNormalRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);

procedure ShaReflectedRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);


//or these

function NormalCRC64(BufPtr: pointer; BufLen: integer): int64;

function ReflectedCRC64(BufPtr: pointer; BufLen: integer): int64;


//···········································································

implementation


var

  ReferenceTable64:                  array[0..255] of int64;

  ByteSwappedTable64: array[0..7] of array[0..255] of int64;

  ReflectedTable64:   array[0..7] of array[0..255] of int64;


//···········································································

procedure ReferenceRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);

asm

  test edx, edx

  jz @ret

  neg ecx

  jge @ret

  sub edx, ecx


  push ebx

  push esi

  push edi

  push eax


  mov ebx, [eax+4]

  mov esi, [eax]

  mov eax, ebx


@next:

  movzx edi, byte [edx + ecx]

  shr ebx, 24

  xor edi, ebx

  shld eax, esi, 8

  xor eax, [edi*8 + ReferenceTable64 + 4]

  shl esi, 8

  xor esi, [edi*8 + ReferenceTable64]

  mov ebx, eax

  add ecx, 1

  jz @done


  movzx edi, byte [edx + ecx]

  shr eax, 24

  xor edi, eax

  shld ebx, esi, 8

  xor ebx, [edi*8 + ReferenceTable64 + 4]

  shl esi, 8

  xor esi, [edi*8 + ReferenceTable64]

  mov eax, ebx

  add ecx, 1

  jnz @next


@done:

  pop eax

  mov [eax], esi

  mov [eax+4], ebx

  pop edi

  pop esi

  pop ebx

@ret:

  end;


//···········································································

procedure ReflectedRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);

asm

  test edx, edx

  jz @ret

  neg ecx

  jge @ret

  sub edx, ecx


  push ebx

  push esi

  push eax


  mov ebx, [eax]

  mov esi, [eax+4]

  xor eax, eax

@next:

  mov al, byte [edx + ecx]

  xor al, bl

  shrd ebx, esi, 8

  xor ebx, [eax*8 + ReflectedTable64]

  shr esi, 8

  xor esi, [eax*8 + ReflectedTable64 + 4]

  add ecx, 1

  jnz @next


@done:

  pop eax

  mov [eax], ebx

  mov [eax+4], esi

  pop esi

  pop ebx

@ret:

  end;


//···········································································

procedure NormalRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);

asm

  test edx, edx

  jz @ret

  neg ecx

  jge @ret

  sub edx, ecx


  push ebx

  push esi

  push eax


  mov ebx, [eax+4]

  mov esi, [eax]

  bswap ebx

  bswap esi

  xor eax, eax

@next:

  mov al, byte [edx + ecx]

  xor al, bl

  shrd ebx, esi, 8

  xor ebx, [eax*8 + ByteSwappedTable64]

  shr esi, 8

  xor esi, [eax*8 + ByteSwappedTable64 + 4]

  add ecx, 1

  jnz @next


@done:

  bswap ebx

  bswap esi

  pop eax

  mov [eax+4], ebx

  mov [eax], esi

  pop esi

  pop ebx

@ret:

  end;


//···········································································

procedure ShaNormalRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);

asm

  test edx, edx

  jz   @ret

  neg  ecx

  jz   @ret


  push ebx

  push esi

  push eax


  mov ebx, [eax+4]

  mov esi, [eax]

  bswap ebx

  bswap esi

  xor eax, eax


@head:

  test dl, 3

  jz @bodyinit


  mov al, byte [edx]

  inc edx

  xor al, bl

  shrd ebx, esi, 8

  xor ebx, [eax*8 + ByteSwappedTable64]

  shr esi, 8

  xor esi, [eax*8 + ByteSwappedTable64 + 4]

  add ecx, 1

  jnz  @head


  bswap ebx

  bswap esi

  pop eax

  mov [eax+4], ebx

  mov [eax], esi

  pop esi

  pop ebx


@ret:

  ret


@bodyinit:

  sub  edx, ecx

  add  ecx, 8

  jg   @bodydone


  push edi

  push ebp

  mov ebp, ecx

  //  crc64: ebx-lo esi-hi

  //   data: eax-lo ecx-hi

  // buffer: edx-base ebp-count

  //  table: edi-index

@bodyloop:

  mov eax, [edx + ebp - 8]

  xor eax, ebx

  movzx edi, al

  mov ecx, [edx + ebp - 4]

  xor ecx, esi

  mov ebx, [edi*8 + ByteSwappedTable64 + 2048*7]

  mov esi, [edi*8 + ByteSwappedTable64 + 2048*7 + 4]

  movzx edi, ah

  xor ebx, [edi*8 + ByteSwappedTable64 + 2048*6]

  xor esi, [edi*8 + ByteSwappedTable64 + 2048*6 + 4]

  shr eax, 16

  movzx edi, al

  xor ebx, [edi*8 + ByteSwappedTable64 + 2048*5]

  xor esi, [edi*8 + ByteSwappedTable64 + 2048*5 + 4]

  movzx edi, ah

  xor ebx, [edi*8 + ByteSwappedTable64 + 2048*4]

  xor esi, [edi*8 + ByteSwappedTable64 + 2048*4 + 4]


  movzx edi, cl

  xor ebx, [edi*8 + ByteSwappedTable64 + 2048*3]

  xor esi, [edi*8 + ByteSwappedTable64 + 2048*3 + 4]

  movzx edi, ch

  xor ebx, [edi*8 + ByteSwappedTable64 + 2048*2]

  xor esi, [edi*8 + ByteSwappedTable64 + 2048*2 + 4]

  shr ecx, 16

  movzx edi, cl

  xor ebx, [edi*8 + ByteSwappedTable64 + 2048*1]

  xor esi, [edi*8 + ByteSwappedTable64 + 2048*1 + 4]

  movzx edi, ch

  xor ebx, [edi*8 + ByteSwappedTable64 + 2048*0]

  xor esi, [edi*8 + ByteSwappedTable64 + 2048*0 + 4]


  add ebp, 8

  jle @bodyloop


  mov ecx, ebp

  pop ebp

  pop edi


@bodydone:

  sub ecx, 8

  je @result


  xor eax, eax

@tail:

  mov al, byte [edx + ecx]

  xor al, bl

  shrd ebx, esi, 8

  xor ebx, [eax*8 + ByteSwappedTable64]

  shr esi, 8

  xor esi, [eax*8 + ByteSwappedTable64 + 4]

  add ecx, 1

  jnz @tail


@result:

  bswap ebx

  bswap esi

  pop eax;

  mov [eax+4], ebx

  mov [eax], esi

  pop esi

  pop ebx

  end;


//···········································································

procedure ShaReflectedRefreshCRC64(var CRC: int64; BufPtr: pointer; BufLen: integer);

asm

  test edx, edx

  jz   @ret

  neg  ecx

  jz   @ret


  push ebx

  push esi

  push eax


  mov ebx, [eax]

  mov esi, [eax+4]


  xor eax, eax

@head:

  test dl, 3

  jz @bodyinit


  mov al, byte [edx]

  inc edx

  xor al, bl

  shrd ebx, esi, 8

  xor ebx, [eax*8 + ReflectedTable64]

  shr esi, 8

  xor esi, [eax*8 + ReflectedTable64 + 4]

  add ecx, 1

  jnz  @head


  pop eax

  mov [eax], ebx

  mov [eax+4], esi

  pop esi

  pop ebx


@ret:

  ret


@bodyinit:

  sub  edx, ecx

  add  ecx, 8

  jg   @bodydone


  push edi

  push ebp

  mov ebp, ecx

  //  crc64: ebx-lo esi-hi

  //   data: eax-lo ecx-hi

  // buffer: edx-base ebp-count

  //  table: edi-index

@bodyloop:

  mov eax, [edx + ebp - 8]

  xor eax, ebx

  movzx edi, al

  mov ecx, [edx + ebp - 4]

  xor ecx, esi

  mov ebx, [edi*8 + ReflectedTable64 + 2048*7]

  mov esi, [edi*8 + ReflectedTable64 + 2048*7 + 4]

  movzx edi, ah

  xor ebx, [edi*8 + ReflectedTable64 + 2048*6]

  xor esi, [edi*8 + ReflectedTable64 + 2048*6 + 4]

  shr eax, 16

  movzx edi, al

  xor ebx, [edi*8 + ReflectedTable64 + 2048*5]

  xor esi, [edi*8 + ReflectedTable64 + 2048*5 + 4]

  movzx edi, ah

  xor ebx, [edi*8 + ReflectedTable64 + 2048*4]

  xor esi, [edi*8 + ReflectedTable64 + 2048*4 + 4]


  movzx edi, cl

  xor ebx, [edi*8 + ReflectedTable64 + 2048*3]

  xor esi, [edi*8 + ReflectedTable64 + 2048*3 + 4]

  movzx edi, ch

  xor ebx, [edi*8 + ReflectedTable64 + 2048*2]

  xor esi, [edi*8 + ReflectedTable64 + 2048*2 + 4]

  shr ecx, 16

  movzx edi, cl

  xor ebx, [edi*8 + ReflectedTable64 + 2048*1]

  xor esi, [edi*8 + ReflectedTable64 + 2048*1 + 4]

  movzx edi, ch

  xor ebx, [edi*8 + ReflectedTable64 + 2048*0]

  xor esi, [edi*8 + ReflectedTable64 + 2048*0 + 4]


  add ebp, 8

  jle @bodyloop


  mov ecx, ebp

  pop ebp

  pop edi


@bodydone:

  sub ecx, 8

  je @result


  xor eax, eax

@tail:

  mov al, byte [edx + ecx]

  xor al, bl

  shrd ebx, esi, 8

  xor ebx, [eax*8 + ReflectedTable64]

  shr esi, 8

  xor esi, [eax*8 + ReflectedTable64 + 4]

  add ecx, 1

  jnz @tail


@result:

  pop eax;

  mov [eax], ebx

  mov [eax+4], esi

  pop esi

  pop ebx

  end;


//···········································································

function NormalCRC64(BufPtr: pointer; BufLen: integer): int64;

var

  crc64: int64;

begin;

  crc64:=-1;

  ShaNormalRefreshCRC64(crc64, BufPtr, BufLen);

  Result:=not crc64;

  end;


//···········································································

function ReflectedCRC64(BufPtr: pointer; BufLen: integer): int64;

var

  crc64: int64;

begin;

  crc64:=-1;

  ShaReflectedRefreshCRC64(crc64, BufPtr, BufLen);

  Result:=not crc64;

  end;


//···········································································

procedure ByteSwap(var Value: int64);

asm

  mov ecx, [eax]

  mov edx, [eax+4]

  bswap ecx

  bswap edx

  mov [eax+4], ecx

  mov [eax], edx

  end;


//···········································································

function GetReflectedPoly(Poly: int64): int64;

var

  i: integer;

begin;

  Result:=0;

  for i:=0 to 63 do begin;

    Result:=(Result shl 1) or (Poly and 1);

    Poly:=Poly shr 1;

    end;

  end;


//···········································································

function CRC64Init: boolean;

const

  EcmaPoly= $42F0E1EBA9EA3693; //ECMA DLT standard (normal form), reflected form = $C96C5795D7870F42;

  //Other found polinomials

  OldProteinReflectedPoly= $d800000000000000; //Bad poly (reflected ISO 3309) - too many collisions on proteins with two mutations

  NewProteinReflectedPoly= $95AC9329AC4BC9B5; //By David T. Jones for protein data banks(reflected form)

var

  Poly, ReflectedPoly, c: int64;

  i, j: integer;

begin;

  Poly:=EcmaPoly;


  ReflectedPoly:=$C96C5795D7870F42;

  //ReflectedPoly:=NewProteinReflectedPoly;


  for i:=0 to 255 do begin;

    c:=i;

    for j:=1 to 8 do if odd(c)

                     then c:=(c shr 1) xor ReflectedPoly

                     else c:=(c shr 1);

    ReflectedTable64[0][i]:=c;


    c:=i;

    c:=c shl 56;

    for j:=1 to 8 do if c<0

                     then c:=(c shl 1) xor Poly

                     else c:=(c shl 1);

    ReferenceTable64[i]:=c;

    ByteSwap(c);

    ByteSwappedTable64[0][i]:=c;

    end;


  for i:=0 to 255 do begin;

    c:=ReflectedTable64[0][i];

    for j:=1 to 7 do begin;

      c:=(c shr 8) xor ReflectedTable64[0][byte(c)];

      ReflectedTable64[j][i]:=c;

      end;

    c:=ByteSwappedTable64[0][i];

    for j:=1 to 7 do begin;

      c:=(c shr 8) xor ByteSwappedTable64[0][byte(c)];

      ByteSwappedTable64[j][i]:=c;

      end;

    end;


  Result:=true;


  c:=-1; ReferenceRefreshCRC64(c,@ReferenceTable64[0],SizeOf(ReferenceTable64));

  Result:=Result and ($305CD291B39AA09A=not c);


  c:=-1; NormalRefreshCRC64(c,@ByteSwappedTable64[0,0],SizeOf(ByteSwappedTable64));

  Result:=Result and ($F0347B5C2C7411D2=not c);

  c:=-1; ShaNormalRefreshCRC64(c,@ByteSwappedTable64[0,0],SizeOf(ByteSwappedTable64));

  Result:=Result and ($F0347B5C2C7411D2=not c);


  if ReflectedPoly=$C96C5795D7870F42 then begin;

    c:=-1; ReflectedRefreshCRC64(c,@ReflectedTable64[0,0],SizeOf(ReflectedTable64));

    Result:=Result and ($014ED9B63590C55E=not c);

    c:=-1; ShaReflectedRefreshCRC64(c,@ReflectedTable64[0,0],SizeOf(ReflectedTable64));

    Result:=Result and ($014ED9B63590C55E=not c);

    end;


  end;


//···········································································

initialization

  CRC64init;

  end.

попробуй напиши аналог на любом языке высокого уровня и сравни время выполнения, раз такой умный.

потом, как обосрешься, пойди поищи книги по оптимизации вычислений, русскому языку, этике. а лучше пойди в школу на уроках посиди, вместо того, чтобы высерами на форуме раскидываться, при этом не разбираясь в том, что ты пишешь (я понимаю в гугле каждый может найти инфу)

Ах, да, забыл добавить. в любой программе, которая ведет сложные и ресурсоемкие вычисления, по-крайней мере в 50% исходного кода используется ассемблер, т.к. он в нынешнее время обеспечивает наиболее высокую скорость вычислений. а то что ты написал по поводу оптимизации операций компиллятором - полный бред. попробуй такое напиши на любом нормальном форуме - тут же будешь обсмеян, забросан какашками и забанен. ;D

Ссылка на комментарий
Поделиться на другие сайты

Zomb1e ближе к правде пишет.

в тех же фотошопах/премьерах и т.п. все графические фильтры, как правило, на 90% пишут вручную на асме. в противном случае вы бы сутками ждали их обработки

для интересующихся ассемблером и оптимизацией:

kkrieger (98kb)

в опред. кругах баян, но думаю здесь не все видели :)

Ссылка на комментарий
Поделиться на другие сайты

я не просто ближе к правде пишу, оно так и есть :). тело просто реально не шарит что пишет, т.к. не знает элементарной разницы между языками высокого уровня и низкого.

specially 4 respawn:

1. разница между асмом и той же с/с++ при компилляции прог заключается в том, что асмовские проги компиллируюся в com!!! файлы (тобиш чистый бинарный код), а программы написанные на языках высокого уровня компилятся в PE (Portal Executable) файлы, тобишь екзешники. для того чтобы заставить работать com, требуется намного меньше времени, чем в случае с exe-файлом, т.к. сам экзешник предварительно транслируется в машинный код, а только лишь после этого уже выполняется.

2. по поводу моего "неудачного примера". да будет тебе известно, что операции умножения и деления являются самыми длительными в процессоре, т.к. занимают несколько тактов процессорного времени. а операция бинарного сдвига аж целый 1. так что иди дитятко учи основы, почитай фундаментальную литературу по программированию и принципах работы эвм, а потом лишь суйся на форумы и бросайся фразами "нубас, неуч, школьник, идиот и др.". А то поначитываются "как освоить **** за 21 день" и считаются себя мегакрутыми специалистами.

Ссылка на комментарий
Поделиться на другие сайты

я не просто ближе к правде пишу, оно так и есть :). тело просто реально не шарит что пишет, т.к. не знает элементарной разницы между языками высокого уровня и низкого.

specially 4 respawn:

1. разница между асмом и той же с/с++ при компилляции прог заключается в том, что асмовские проги компиллируюся в com!!! файлы (тобиш чистый бинарный код), а программы написанные на языках высокого уровня компилятся в PE (Portal Executable) файлы, тобишь екзешники. для того чтобы заставить работать com, требуется намного меньше времени, чем в случае с exe-файлом, т.к. сам экзешник предварительно транслируется в машинный код, а только лишь после этого уже выполняется.

2. по поводу моего "неудачного примера". да будет тебе известно, что операции умножения и деления являются самыми длительными в процессоре, т.к. занимают несколько тактов процессорного времени. а операция бинарного сдвига аж целый 1. так что иди дитятко учи основы, почитай фундаментальную литературу по программированию и принципах работы эвм, а потом лишь суйся на форумы и бросайся фразами "нубас, неуч, школьник, идиот и др.". А то поначитываются "как освоить **** за 21 день" и считаются себя мегакрутыми специалистами.

1. не обязательно.

2. пример неудачный, там непонятен тип чисел, а твой асм-аналог прокатит только с целыми. */ не самые длительные  ;D 3 такта. есть больше :)

3. 2респавн: в опенжл / директХ присутсвует только простейшая оптимизация (по глубине + cullface), всё остальное (октарные деревья, порталы и пр.) пишется вручную авторами движка UT. в посте № 18 ты заовнился :)

лучше коментим программку по моему линку  8)

Ссылка на комментарий
Поделиться на другие сайты

да в эту игрулю я играл еще классе в 11м (лет 6-7 назад), ток там еще был 32-метровый дат файл :)

Ссылка на комментарий
Поделиться на другие сайты

да в эту игрулю я играл еще классе в 11м (лет 6-7 назад), ток там еще был 32-метровый дат файл :)

он создаётся этим ехе-шником при 1м запуске. его можно удалить, но тогда при 2м и последующих запусках снова придётся ждать :)

Ссылка на комментарий
Поделиться на другие сайты

ну во первых Л2 не поддерживает многопоточность, у меня 4 ядра, грузит в общем ~25 %, соответственно 1 ядро токо корячится. Скорее всего движок игрой как был, таким и остался, без серьезных адаптаций под новое железо. И не стоит думать что компы слабые и не тянут,надо новый покупать , гон все это. Ну конечно, лока в ГХ палюбасу будет лагать и за присутствия 500+ персов, процу тяжко обрабатывать их, но и города там где около 50 персов, иметь 30 фпс это смешно :mellow:

Ссылка на комментарий
Поделиться на другие сайты

у меня в окне выбора чара 220 фпс ;D

Ыыы... У меня под 400 что ли... ;D

да в эту игрулю я играл еще классе в 11м (лет 6-7 назад), ток там еще был 32-метровый дат файл :)

Ты на ОБТ в Корее играл что ли? Балабол мля... :D

Ссылка на комментарий
Поделиться на другие сайты

Ыыы... У меня под 400 что ли... ;D

Ты на ОБТ в Корее играл что ли? Балабол мля... :D

баран, читай внимательнее, я про игрулю в 92 кб писал.

Ссылка на комментарий
Поделиться на другие сайты

баран, читай внимательнее, я про игрулю в 92 кб писал.

Барана ты в зеркале по утрам видишь... :D

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...