HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #21  
Старый 06.04.2010, 01:05
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

правильно, потому что 1=1 сравниваются константы
компилятор такие вещи вычисляет заранее

кстати, AlexTheC0d3r советую для таких вещей установить себе профайлер чтобы каждый раз не мучаться с настройкой велика - GProfile

Намного хуже когда я вижу такой код:
if Button1.Enabled = True then ...

Последний раз редактировалось GhostOnline; 06.04.2010 в 01:16..
 
Ответить с цитированием

  #22  
Старый 06.04.2010, 02:06
Jingo Bo
Познающий
Регистрация: 25.10.2009
Сообщений: 97
Провел на форуме:
604635

Репутация: 15
По умолчанию

Цитата:
if Button1.Enabled = True then ...
Да, это тоже лол

Эт я тоже давно читал примеры говнокода и вот до сих пор вспоминаю код :

if Length(IntToStr(number)) = 1 then
{один разряд у числа} else { не один }

или
if true then
{что то делаем} else {а дальше сплошной профит}

Такие мастера находятся)

Последний раз редактировалось Jingo Bo; 06.04.2010 в 02:14..
 
Ответить с цитированием

  #23  
Старый 06.04.2010, 02:13
Jingo Bo
Познающий
Регистрация: 25.10.2009
Сообщений: 97
Провел на форуме:
604635

Репутация: 15
По умолчанию

Потестил код, короче с true как ни крути выигрывает, 672ms, при 1=1 686ms. Но в отладчике код одинаков, то есть ни там ни там нет проверки, но разница есть, во всём виноваты массоны)
 
Ответить с цитированием

  #24  
Старый 06.04.2010, 15:04
AlexTheC0d3r
Постоянный
Регистрация: 25.07.2008
Сообщений: 454
Провел на форуме:
1229135

Репутация: 425
Отправить сообщение для AlexTheC0d3r с помощью ICQ
По умолчанию

Новый тест, без оптимизации...
Действительно, как бы не парадоксально это выглядело, но
PHP код:
while true do 
проигрывает по скорости коду ->
PHP код:
while 1=do 
Также можно заметить, что добавление в условие цикла сторонних вычислений во много раз замедляет его работу, вот доказательства:

PHP код:
{$OPTIMIZATION OFF}
program TestCycleDuration;

{
$APPTYPE CONSOLE}

uses
  SysUtils
DateUtils;
var
  
iinteger;
  
timeStarttimeEndTDateTime;
  
firstRessecondResthirdResstring;

begin
  Writeln
('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('First test, cycle "while true do"');
  
Writeln('Testing...');
  
:= 0;
  
timeStart := now;
  while 
True do
  
begin
    i 
:= 1;
    if 
2000000000 then
      
Break;
  
end;
  
timeEnd := Now;
  
Writeln('Test duration: ' inttostr(MilliSecondsBetween(timeEndtimeStart))
    +
    
'ms');
  
firstRes := inttostr(MilliSecondsBetween(timeEndtimeStart));
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('Second test, cycle "while 1=1 do"');
  
Writeln('Testing...');
  
:= 0;
  
timeStart := now;
  while 
do
  
begin
    i 
:= 1;
    if 
2000000000 then
      
Break;
  
end;
  
timeEnd := Now;
  
Writeln('Test duration: ' inttostr(MilliSecondsBetween(timeEndtimeStart))
    +
    
'ms');
  
secondRes := inttostr(MilliSecondsBetween(timeEndtimeStart));
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('................................');
  
Writeln('Tird test, moron'#39's cycle "while StrToInt(1)=StrToInt(1) do"');
  
Writeln('Testing...');
  
:= 0;
  
timeStart := now;
  while 
StrToInt('1') = StrToInt('1') do
  
begin
    i 
:= 1;
    if 
2000000000 then
      
Break;
  
end;
  
timeEnd := Now;
  
Writeln('Test duration: ' inttostr(MilliSecondsBetween(timeEndtimeStart))
    +
    
'ms');
  
thirdRes := inttostr(MilliSecondsBetween(timeEndtimeStart));
  
WriteLn('Two tests: 1: ' firstRes 'ms' ' 2: ' secondRes 'ms' ' 3:'
    
thirdRes 'ms');
  
Readln;
end
Результаты: 1- 4812ms 2-4750ms 3-36265ms
 
Ответить с цитированием

  #25  
Старый 06.04.2010, 19:30
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме:
188563

Репутация: 52
По умолчанию

Один раз было, что True на 10 мс быстрее выполнилось чем 1=1:

1: 3859ms 2: 3844ms 3: 91609ms
1: 4249ms 2: 4000ms 3: 92421ms

P.s. 3 метод просто убивает
 
Ответить с цитированием

  #26  
Старый 06.04.2010, 19:51
AlexTheC0d3r
Постоянный
Регистрация: 25.07.2008
Сообщений: 454
Провел на форуме:
1229135

Репутация: 425
Отправить сообщение для AlexTheC0d3r с помощью ICQ
По умолчанию

Цитата:
Сообщение от JnK  
Один раз было, что True на 10 мс быстрее выполнилось чем 1=1:

1: 3859ms 2: 3844ms 3: 91609ms
1: 4249ms 2: 4000ms 3: 92421ms

P.s. 3 метод просто убивает
Дак там и написано идиотский тест)
 
Ответить с цитированием

  #27  
Старый 07.04.2010, 11:40
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

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

  #28  
Старый 07.04.2010, 15:24
qwerty001
Новичок
Регистрация: 05.04.2010
Сообщений: 7
Провел на форуме:
17240

Репутация: 0
По умолчанию

Цитата:
const ci_interval = 79;
ci_index = 32;

function IntToSymbols(Const bound : Cardinal) : String;
Var i, curBound, c_mod : Cardinal;
c_tmp : Char;
Begin
Result := '';
curBound := bound;
while true do
Begin
if curBound < ci_interval then
Begin
Result := Result + Chr(ci_index + curBound);
Break;
end;
c_mod := curBound mod ci_interval;
curBound := curBound div ci_interval;
Result := Result + Chr(ci_index + c_mod);
end;
for i := 1 to Length(Result) div 2 do
Begin
c_tmp := Result[i];
Result[i] := Result[Length(Result)-i+1];
Result[Length(Result)-i+1] := c_tmp;
end;
end;
объясните пожалуйста почему когда использую этот код и подключаю icqclient, то код рожает совсем другие символы?
 
Ответить с цитированием

  #29  
Старый 08.04.2010, 01:21
qwerty001
Новичок
Регистрация: 05.04.2010
Сообщений: 7
Провел на форуме:
17240

Репутация: 0
По умолчанию

всё, разобрался. но возникла другая проблема. по коду Jingo Bo, если брать словарь 79 символов и переменную int64, то перебор возможен до ~7(длина пароля) символов, потом всё по новой переберает. =\

Последний раз редактировалось qwerty001; 08.04.2010 в 01:23..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Буквенный перебор C++ fire64 С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 16 20.07.2009 15:57
распределённый перебор хешэй на perl ShAnKaR PHP 2 18.10.2007 00:38
Распределённый перебор *Van* Криптография, расшифровка хешей 399 24.12.2005 18:14
Распределенный перебор. Ver.3 (прием участников и хэшей) censored! Криптография, расшифровка хешей 191 06.09.2005 10:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ