Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2015, 02:14   #1
Мордохвост
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 30
По умолчанию Строка в Float - как за время в 7 раз большее, чем просто пустой цикл

Код:
procedure TForm1.FormClick(Sender: TObject);
const
test : array [1..9] of WideString = ('1234','-1.2e3','0.1','-1.2e-3','-.2e3','-2e6',
'1.2345e5','-5.7222349715140557e+307','2.0332938517515416e-308');
var
t1 : Int64;
t2 : Int64;
fq : Int64;
i  : Integer;
j  : Integer;
d  : Double;
begin
QueryPerformanceFrequency(fq);
QueryPerformanceCounter(t1);

for i := 0 to 10000000 do
  for j := 1 to 9 do
  begin
    //d := StrToFloat(test[j]);
    //MIStrToDouble(test[j],d);
  end;

QueryPerformanceCounter(t2);
ShowMessage(FormatFloat('0.000',(t2-t1)/fq));
end;
StrToFloat - 13.5 с.
MIStrToDouble - 4.2 с. (My Implementation; 2-стороний тримминг; #asm #sse4.1/4.2)
Пустой цикл - 0.1 с.

Ну и boost_spirit_double - 0.7 с. Как?! У него boost_spirit_int 1.4, хотя тама экспу и точку считать не надо и у меня и то быстрее(~1.1). Я не знаю че за boost, по мне так колдовство какое-то. Скиньте плиз дизасм!
Мордохвост вне форума Ответить с цитированием
Старый 03.08.2015, 08:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Безсвязный набор слов...
Что у кого? У кого у него?...
Открой Си, подключи библиотеку boost скомпилируй и в дизассемблере открой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2015, 10:52   #3
Мордохвост
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 30
По умолчанию

Получилось, но только Debug/Win32, в остальных не видит boost/config (vs2010sp1). Результаты:
atof 7.31[s]
tod 7.76[s]
boost 21.71 [s](!!!)

А терь ваще все перестал видеть даже на новом проекте. Писят тыщ мусора на три гига. За что перестал?! Stilet, спасибо! Я понял ныне это библиотека.

А, 0.7[s] на оффсайте(?) написано http://boost-spirit.com/home/2014/09...-in-the-world/

Последний раз редактировалось Мордохвост; 03.08.2015 в 10:54.
Мордохвост вне форума Ответить с цитированием
Старый 03.08.2015, 11:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Дак ты в ОллиДебугере открой... Я его имел ввиду.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл не печатает Y 10 раз, в чем может быть проблема serzav5 Общие вопросы C/C++ 8 22.01.2012 23:57
Склеить скрипт Время суток+Вы были тут N раз+склонение *РАЗ*_*РАЗА* vkontakte JavaScript, Ajax 4 12.09.2011 14:41
Работа со строками. Не разберуст как определить сколько раз 2-ая строка встречается в 1-ой.( Borland3.1C) dykatob Общие вопросы C/C++ 6 05.05.2011 21:44
Работа со строками. Не пойму как определить сколько раз одна строка встречается в другой dykatob Общие вопросы C/C++ 10 29.04.2011 22:46
Нечто большее, чем extended firephenix Общие вопросы Delphi 11 01.04.2011 20:09