Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> &array[ 0 ] vs. array 
:(
    Опции темы
mes
Дата 19.11.2011, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



volatile,у вас вроде VS (или кто нибудь другой у кого она есть)..
  какой sizeof у std::string ? 
 VS желательна старой версии, на новой будет скорей всего будет 4 байта ( из за cow)..


Это сообщение отредактировал(а) mes - 19.11.2011, 12:36


--------------------
PM MAIL WWW   Вверх
semibug
Дата 19.11.2011, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



mes, VS2005/Win7x64, Default Project Settings for Console App:
Debug
32 bytes
Release
28 bytes

попробовал в VS2010 - результат тот же

Это сообщение отредактировал(а) semibug - 19.11.2011, 12:53
PM   Вверх
volatile
Дата 19.11.2011, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(mes @  19.11.2011,  12:30 Найти цитируемый пост)
какой sizeof у std::string ? 

mes, 
В студии стринг маленькие строки (кажется до 14 байт, точно не помню) хранит внутри себя, без выделения памяти. Поэтому размер не 4 байта, а как сказал 
semibug, 
Цитата(semibug @  19.11.2011,  12:47 Найти цитируемый пост)
Debug
32 bytes
Release
28 bytes




Это сообщение отредактировал(а) volatile - 19.11.2011, 13:04
PM MAIL   Вверх
mes
Дата 19.11.2011, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(volatile @  19.11.2011,  12:03 Найти цитируемый пост)
В студии стринг маленькие строки (кажется до 14 байт, точно не помню) хранит внутри себя, без выделения памяти. 

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

Добавлено через 1 минуту и 55 секунд
Цитата(mes @  19.11.2011,  12:33 Найти цитируемый пост)
больших строк этот буфер остается незайдествованным.

это не проверял, но я все ж надеюсь что у них именно так, а не 
Цитата(mes @  19.11.2011,  12:33 Найти цитируемый пост)
 хвост в куче

потому как в противном случае, пдобная проблема всплывала бы часто..

Добавлено через 6 минут и 13 секунд
Цитата(boostcoder @  19.11.2011,  11:27 Найти цитируемый пост)
Цитата

существуют
ну раз Вы говорите...

я говорил :
Цитата(mes @  19.11.2011,  11:16 Найти цитируемый пост)
существуют (законы по стандарту)

а эт несколько иное значение smile

Добавлено через 11 минут и 53 секунды
Цитата(volatile @  19.11.2011,  11:19 Найти цитируемый пост)
 которые работают в реале всегда

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


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 19.11.2011, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(mes @  19.11.2011,  13:33 Найти цитируемый пост)
для больших строк этот буфер остается незайдествованным.. этим они и спасаются от вышеуказанной ошибки.

где-то на винграде это обсуждалось. но я не понимаю где здесь хоть намек на эффективность? вот нужно создать мильен строк размером больше того буфера, и что мы получим? - пустые расходы памяти. ведь 14*1000000 = 14мб smile 
PM WWW   Вверх
volatile
Дата 19.11.2011, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(boostcoder @  19.11.2011,  14:02 Найти цитируемый пост)
я не понимаю где здесь хоть намек на эффективность? вот нужно создать мильен строк размером больше того буфера

Это же не объективный (специально подобранный) тест, чтобы дескредитировать такой алгоритм.
Почему-бы не взять (тоже не объективный) тест с мульеном строк, но размером чуть меньше этого буфера. smile Если вспомнить что выделение памяти одна из самых тормознутых операций, то тест будет далеко не в пользу реализаций с коротким sizeof (string).
Впрочем я не защищаю их алгоритм.
У стл-порт короткий sizeof (string), можно поставить его - выбор есть всегда. Но реального быстродействия, и экономии памяти при использовании стл-порт::string, у я не заметил.

Цитата(mes @  19.11.2011,  13:33 Найти цитируемый пост)
но ничто не мешало .. им сделать реализацию, которая хранила бы часть строки в локальном буфере, а хвост в куче..

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

PM MAIL   Вверх
mes
Дата 19.11.2011, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(volatile @  19.11.2011,  13:50 Найти цитируемый пост)
стринга которые бы не работали, так как 

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

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



Это сообщение отредактировал(а) mes - 19.11.2011, 15:29


--------------------
PM MAIL WWW   Вверх
volatile
Дата 19.11.2011, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



mes, абсолютно согласен.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0768 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.