Показать сообщение отдельно
  #17  
Старый 30.11.2013, 13:56
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от seeman_tm
to poli-smen
Ты меня забавляешь, у тебя или со зрением проблема или недостаток внимания.
Забавляйся сколько душе угодно, я же тебе не запрещу?
Со зрением у меня никогда проблем не было, хотя вплотную занимаюсь компьютерами ещё с детства.
Когда на работе делаю несколько дел одновременно, внимание конечно снижается - здесь согласен - виноват.
Цитата:
Сообщение от seeman_tm
В каком месте ты увидел что идёт сравнение одной и тойже строки а не двух одинаковых ?
Разве у тебя в Delphi сломался отладчик, что ты не можешь посмотреть, что обе переменные указывают на одну и ту же строку? Или, если ты не умеешь работать с отладчиком, мог бы сделать для проверки хотя бы так:
Код:
function Test(Str1, Str2: String): Extended;
var
  i: Integer;
  tic1, tic2: DWORD;
begin
  if Pointer(Str1) = Pointer(Str2) then
    raise Exception.Create('Эй! Мне подсунули одну и ту же строку. Нечего халтурить!');
.....
Цитата:
Сообщение от seeman_tm
При чём тут мой тест ? Код моего теста на форум не выкладывался. Везде твои исходники, за исключением закомментированных двух нахрен не нужных строк.
Именно этот тест я и назвал твоим - ты закомментировал в моём тесте UniqueString даже не задумавшись о том зачем они там были нужны.

Хорошо. Вот тебе ещё один тест. Если и он тебя не убедит в твоей неправоте - тогда я пас.
Код:
function Test(Str1, Str2: String): Extended;
var
  i: Integer;
  tic1, tic2: DWORD;
begin
  tic1 := GetTickCount;
  for i := 1 to 10000000 do
  begin
    if Str1 = Str2 then;
  end;
  tic2 := GetTickCount;

  Result := (tic2 - tic1) / 1000;
end;


procedure TForm1.Button1Click(Sender: TObject);
const
  alphabet: String = 'qwertyuiopйцукенгшщз'; // Список символов которые будут использованы в строках
var
  s1, s2, s3: String;
  i: Integer;
  c: Char;
begin
  // Будет три больших строки
  SetLength(s1, 10000);
  SetLength(s2, 10000);
  SetLength(s3, 10000);

  // Заполняем эти строки случайными символами из списка alphabet
  for i := 1 to Length(s1) do
  begin
    c := alphabet[Random(Length(alphabet)+1)]; // Получаем случайный символ из списка alphabet
    s1[i] := c; // Строки s1 и s2 будем заполнять одним и тем же набором символов
    s2[i] := c; // поэтому эти строки будут одинаковыми

    c := alphabet[Random(Length(alphabet)+1)]; // Получаем другой случайный символ из списка alphabet
    s3[i] := c; // А s3 будем заполнять другим набором символов
  end;

  // Всё готово для теста
  ShowMessageFmt('Сравнение одной и той же строки заняло %g сек, одинаковых строк заняло %g сек'+
    ' и разных строк заняло %g сек', [Test(s1, s1),  Test(s1, s2), Test(s1, s3)]);
end;
Цитата:
Сообщение от seeman_tm
От чего в первом исходнике была обнаружена разница в показаниях и показана для особо одарённых в картинках. Но ты упёрся во что то своё и пытаешься доказать то ты не тот кем на самом деле являешься.
О каком таком великом разоблачении идёт речь?
В любом случае я устал бить горохом о стену. Если кто-то упёрто считает что одинаковые строки должны сравниваться быстрее различных - это его проблема, а не моя. Согласен?
Ответить с цитированием