Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > std::string vs std:wstring: кто шустрее?


Автор: Alca 23.1.2009, 14:55
std::string vs std:wstring: кто шустрее анси или юникод строка? VC++ 2008.

Автор: mrbrooks 23.1.2009, 14:58
йа пологаю что оба не слабые чуваки  smile 

а что использовать? ну дык скорее юникодную строку - ибо юникод наше все!

Автор: Lycifer 23.1.2009, 15:00
во первых это typedef.(ТО и есть алгоритм один)
ВО вторых wstring это wcha_t - а значит что 2 байта
так что string экономичней и немного шустрее.(пример: копирование, удаление в принципе любай модификация)

Автор: mrbrooks 23.1.2009, 15:05
Цитата(Lycifer @  23.1.2009,  15:00 Найти цитируемый пост)
так что string экономичней и немного шустрее 

тут надо копать в сторону - а зачем собственно юникод. И все станет очевидно - зачем и когда применять имхо.  smile 

Автор: Alca 23.1.2009, 16:10
Тестил (проект прикреплён):
Цитата

Строки:
std::string =  "bla-bla-bla-....";
std::wstring = L"bla-bla-bla-....";

Компилер:
VC++ 2008 (без SP1)

Тачка:
Celeron 1.8 Ghz, RAM 760 Mb

Функция, которой замерял время:
GetTickCount()

Результат (время):
Test AnsiString:        0:02:01:969
Test UnicodeString:     0:02:08:656

Испльзование памяти (диспетчер задач):
Ansi.exe  - 232 Кб
Unicode.exe - 260 Кб

Автор: pan2004 23.1.2009, 21:48
Цитата(Alca @  23.1.2009,  14:55 Найти цитируемый пост)
std::string vs std:wstring: кто шустрее анси или юникод строка?

Сравнили кота с яичницей... smile 

Автор: Alca 23.1.2009, 21:56
Цитата

Сравнили кота с яичницей..

???

Автор: Lazin 23.1.2009, 21:59
я считаю что int шустрее чем std::string, давайте напишем тест smile 

Автор: JackYF 24.1.2009, 17:11
Ребят, вам самим не смешно? Поддерижваю Lazin.

Автор: Alca 24.1.2009, 18:10
Цитата

я считаю что int шустрее чем std::string, давайте напишем тест

А что инт держит строки? smile 
Цитата

Ребят, вам самим не смешно? Поддерижваю Lazin.

Или вы хотите сказать, что AnsiString быстрее работает чем std::string (C++Builder)? smile 

Автор: Lazin 24.1.2009, 18:22
Цитата(Alca @  24.1.2009,  18:10 Найти цитируемый пост)
Или вы хотите сказать, что AnsiString быстрее работает чем std::string (C++Builder)?

я хотел сказать, что это разные типы данных, которые хранят разные данные и не взаимо-заменяемы, так-же как int и std::string smile 
Цитата(Alca @  24.1.2009,  18:10 Найти цитируемый пост)
А что инт держит строки?

из 4х символов smile 

Автор: Alca 24.1.2009, 18:32
Цитата

Цитата

А что инт держит строки?

из 4х символов

Код

int i = "abcd";    //???
 smile 

Автор: Lazin 24.1.2009, 18:52
Код

int lolstr;
char* str = "lol";
memcpy((void*)&lolstr, (void*)str, sizeof(lolstr));

естественно это шутка

Автор: baldina 24.1.2009, 19:52
Цитата

Результат (время):
Test AnsiString:        0:02:01:969
Test UnicodeString:     0:02:08:656


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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)