Re[29]: собеседования, Реверс списка
От: Ночной Смотрящий Россия  
Дата: 18.10.13 18:25
Оценка: -1
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Ты лучше ответь на вопрос который в самом верху.


Я на него уже ответил
Re[37]: собеседования, Реверс списка
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.10.13 18:44
Оценка: :)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

I>>Наоборот, очень легко. Для хештейбла это всего 5000 элементов.


EP>Ну так а что у hashtable внутри? Не массив случайно?


Целых два.

EP>А что там сравнивать — у deque'и при random access на одну косвенность больше. Линейная итерация, если реализовывать максимально эффективно, то получается практически также


Какую задачу ты хочешь декой решить ? итерации по линкед лист и по какому нибудь полу-массиву практически одинаково стоят.

У деки преимущество не в рандомном доступе, а в сложности рандомного добавления, удаления. Покажи задачу, на которой ты хочешь профит получить.
Re[38]: собеседования, Реверс списка
От: Evgeny.Panasyuk Россия  
Дата: 18.10.13 18:55
Оценка:
Здравствуйте, Ikemefula, Вы писали:

EP>>Ну так а что у hashtable внутри? Не массив случайно?

I>Целых два.

И как это опровергает:

EP>В этой Large Object Heap основные жители это массивы.

?

EP>>А что там сравнивать — у deque'и при random access на одну косвенность больше. Линейная итерация, если реализовывать максимально эффективно, то получается практически также


I>Какую задачу ты хочешь декой решить?


Аллокацию array-like данных в условиях фрагментации, топик разве не про это

Мне уже надоело объяснять тривиальные вещи, поэтому следующие два перла оставляю тебе на домашнее задание:

I>итерации по линкед лист и по какому нибудь полу-массиву практически одинаково стоят.




I>У деки преимущество не в рандомном доступе, а в сложности рандомного добавления, удаления.


Re[39]: собеседования, Реверс списка
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.10.13 19:17
Оценка: :)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>И как это опровергает:

EP>

EP>>В этой Large Object Heap основные жители это массивы.

EP>?

А я где то написал опровержение ? Дай ссылку что ли

I>>Какую задачу ты хочешь декой решить?


EP>Аллокацию array-like данных в условиях фрагментации, топик разве не про это


Они все разные, array-like данные. Если не критично удаление-добавление по индексу, то от деки толку мало. То есть, выбирать структуры для оптимизации нужно под конкретные сценарии в приложении, а не руководствуясь соображениями о прекрасном.

Скажем для многих вещей сгодится какой нибудь BigList или ScanList из powercollections, а если в циклах тяжелые вычисления, то и вовсе сгодится разреженный массив на основе дерева.
Re[36]: собеседования, Реверс списка
От: Erop Россия  
Дата: 18.10.13 19:24
Оценка: +2
Здравствуйте, Ikemefula, Вы писали:

I>Я уже рассказывал, но ты же не читатель.


Это ты не читатель. Я же уже писал тут, что пока что складывается такое впечатление, что С#-разрабы в массе своей не смогли разобраться в причинах проблемы и просто перестали использовать большие вектороподобные коллекции

Пока что ты это только подтверждаешь...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[25]: собеседования, Реверс списка
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.10.13 19:30
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>>>Речь идёт про загаживание LOH большими объектами, с которым дела обстояли плохо вплоть до VS2008.

НС>>Стоит начать хотя бы с понимания того факта, что рантайм (и поведение GC) от версии студии практически никак не зависит.

EP>Это очень важный факт, который меняет в корне всю дискуссию. Когда делал примеры — выбирал максимально доступный Runtime.

EP>Расскажи лучше как в VS2008 выбрать .NET 4.0

Ты определись, чего хочешь, скомпилить код или проверить код под конкретным рантаймом ?

Если первое, то это к доктору. Если второе, то компилится ОДИН РАЗ хоть для .Net 1.0 и дальше переключаешь рантайм в манифесте. Я совсем недавно обнаружил, что часть прекомпиленых сборок никто не билдил ажно с 2003го года, это .Net 1.1
И это, представь, на флагманском продукте который зарабатывал основные деньги для всей компании.

Пойми простую вещь, если код компилится в древней вижле, то это вовсе не значит, что работать он будет под тем же древним рантаймом. Большей частью наоборот, а вижла нужна только для того, что бы какой нибудь экзотический компилер поднять, которой микрософт перестала майнтейнить, навроде J#.
Re[29]: собеседования, Реверс списка
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.10.13 19:31
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Ты лучше ответь на вопрос который в самом верху.


Ты лучше сформулируй проблему, которую хочешь решить. С вероятностью 99% НС уже дал исчерпывающий ответ.
Re[40]: собеседования, Реверс списка
От: Evgeny.Panasyuk Россия  
Дата: 18.10.13 19:52
Оценка:
Здравствуйте, Ikemefula, Вы писали:

EP>>И как это опровергает:

EP>>

EP>>>В этой Large Object Heap основные жители это массивы.

EP>>?
I>А я где то написал опровержение ? Дай ссылку что ли

http://rsdn.ru/forum/flame.comp/5335848.1
Автор: Ikemefula
Дата: 18.10.13


EP>>В этой Large Object Heap основные жители это массивы.
EP>>Как я понял, Large Object в виде структуры/класса при пороге 85kB получить крайне трудно. Особенно учитывая то, что fixed-size массивы там крайне неудобные (только unsafe context).
I>Наоборот, очень легко. Для хештейбла это всего 5000 элементов.



I>>>Какую задачу ты хочешь декой решить?

EP>>Аллокацию array-like данных в условиях фрагментации, топик разве не про это
I>Они все разные, array-like данные. Если не критично удаление-добавление по индексу, то от деки толку мало.

Какая сложность добавления элемента в центр std::deque?
Re[14]: собеседования, Реверс списка
От: vdimas Россия  
Дата: 18.10.13 20:00
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

V>>Возможно... Но мне даже трудно представить задачу, когда нам нужно десятки/сотни миллионов элементов в линейном массиве.

НС>Сочувствую, чо.

Ну я типа ждал ЛЮБОГО примера, чтобы показать, что линейный массив для него не нужен. )))
Re[30]: собеседования, Реверс списка
От: Evgeny.Panasyuk Россия  
Дата: 18.10.13 20:00
Оценка: -2
Здравствуйте, Ikemefula, Вы писали:

EP>>Ты лучше ответь на вопрос который в самом верху.

I>Ты лучше сформулируй проблему, которую хочешь решить. С вероятностью 99% НС уже дал исчерпывающий ответ.

Поясни как вот это
Автор: Ночной Смотрящий
Дата: 17.10.13
относится к обсуждаемой проблеме и приведённым примерам. И как бы возможность смены рантайма помогла бы всем этим людям в своё время.
Re[37]: собеседования, Реверс списка
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.10.13 20:00
Оценка: :)
Здравствуйте, Erop, Вы писали:

E>Это ты не читатель. Я же уже писал тут, что пока что складывается такое впечатление, что С#-разрабы в массе своей не смогли разобраться в причинах проблемы и просто перестали использовать большие вектороподобные коллекции


Никто никогда не переставал. Где то в 20% приложений такие коллекции дают проблемы и как то люди справлялись, не думаешь ли ты, что только я один умный, смог забороть в проекте эту фрагментацию ?

Кроме того, там где нужны большие вектороподобные коллекции, C# гарантировано сливает нативным плюсам в большинстве сценариев. Подумай головой — дотнетчики они почти все бывшие плюсовики, что еще они могли заюзать ?
Re[37]: собеседования, Реверс списка
От: Ночной Смотрящий Россия  
Дата: 18.10.13 20:02
Оценка:
Здравствуйте, Erop, Вы писали:

E>просто перестали использовать большие вектороподобные коллекции


Офигеть. А можно логическую цепочку, которая привела тебя к такому выводу?
Re[31]: собеседования, Реверс списка
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.10.13 20:09
Оценка: -1 :)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>>>Ты лучше ответь на вопрос который в самом верху.

I>>Ты лучше сформулируй проблему, которую хочешь решить. С вероятностью 99% НС уже дал исчерпывающий ответ.

EP>Поясни как вот это
Автор: Ночной Смотрящий
Дата: 17.10.13
относится к обсуждаемой проблеме и приведённым примерам. И как бы возможность смены рантайма помогла бы всем этим людям в своё время.


Объясняю — ты не раз и не два писал "а вон в той вижле GC не так работает"
А потом попросил совета, как сбилдить прожку не под той вижлой, очевидно, для проверки LOH

Не нужно ничего билдить в разных вижлах, правишь манифест, а билди хоть вижлой 2002го года один раз на все случаи жизни.

Всем этим людям смена вижлы не поможет никак — версия вижлы не влияет на ГЦ и рантайм.

Этим людям поможет
1. профайлер
2. /dev/brain
3. Новый GC

Какие еще у тебя вопросы ?
Re[32]: собеседования, Реверс списка
От: Evgeny.Panasyuk Россия  
Дата: 18.10.13 20:19
Оценка:
Здравствуйте, Ikemefula, Вы писали:

EP>>Поясни как вот это
Автор: Ночной Смотрящий
Дата: 17.10.13
относится к обсуждаемой проблеме и приведённым примерам. И как бы возможность смены рантайма помогла бы всем этим людям в своё время.

I>Объясняю — ты не раз и не два писал "а вон в той вижле GC не так работает"
I>А потом попросил совета, как сбилдить прожку не под той вижлой, очевидно, для проверки LOH
I>Не нужно ничего билдить в разных вижлах, правишь манифест, а билди хоть вижлой 2002го года один раз на все случаи жизни.

У меня есть все VS начиная с 2005, и мне не трудно прогнать тест в каждой

I>Всем этим людям смена вижлы не поможет никак — версия вижлы не влияет на ГЦ и рантайм.


Видишь дату вопроса? Каким образом они могли бы использовать .NET 4.0 или .NET 4.5 в 2009 году
Re[41]: собеседования, Реверс списка
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.10.13 20:27
Оценка: :)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>>>>В этой Large Object Heap основные жители это массивы.

EP>>>[/q]
EP>>>?
I>>А я где то написал опровержение ? Дай ссылку что ли

EP>http://rsdn.ru/forum/flame.comp/5335848.1
Автор: Ikemefula
Дата: 18.10.13


EP>

EP>>>В этой Large Object Heap основные жители это массивы.
EP>>>Как я понял, Large Object в виде структуры/класса при пороге 85kB получить крайне трудно. Особенно учитывая то, что fixed-size массивы там крайне неудобные (только unsafe context).
I>>Наоборот, очень легко. Для хештейбла это всего 5000 элементов.


Так здесь совсем другое, вот класс хештейбла, он спокойно войдет в LOH при определнном размере Или ты имеешь ввиду одним куском шоб сразу все было ? Не совсем ясно, для чего это нужно

EP>>>Аллокацию array-like данных в условиях фрагментации, топик разве не про это

I>>Они все разные, array-like данные. Если не критично удаление-добавление по индексу, то от деки толку мало.

EP>Какая сложность добавления элемента в центр std::deque?


Ты лучше сразу напиши, с чем ты не согласен, а то я устал уже. Если вставка-удаление в деку хуже константы, то дека никому не нужна. В моей реализации — константа.
Типичный сценарий — удалить надо 1000...100000 элементов по индексу. Если структура линейная, то это фейл с лагами чуть не в минутах. Я на этом сэкономил с 6 часов до 5 минут, одной только декой.
Re[33]: собеседования, Реверс списка
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.10.13 20:32
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

I>>Не нужно ничего билдить в разных вижлах, правишь манифест, а билди хоть вижлой 2002го года один раз на все случаи жизни.


EP>У меня есть все VS начиная с 2005, и мне не трудно прогнать тест в каждой


Если тебе нравится работать руками, так работай руками, зачем тебе советы ?

I>>Всем этим людям смена вижлы не поможет никак — версия вижлы не влияет на ГЦ и рантайм.


EP>Видишь дату вопроса? Каким образом они могли бы использовать .NET 4.0 или .NET 4.5 в 2009 году


А ты читай, в самом начале говорится про .Net 4, более того, там указано, что вижла была 2010 бета 2.
Re[34]: собеседования, Реверс списка
От: Evgeny.Panasyuk Россия  
Дата: 18.10.13 20:47
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>>>Всем этим людям смена вижлы не поможет никак — версия вижлы не влияет на ГЦ и рантайм.

EP>>Видишь дату вопроса? Каким образом они могли бы использовать .NET 4.0 или .NET 4.5 в 2009 году
I>А ты читай, в самом начале говорится про .Net 4, более того, там указано, что вижла была 2010 бета 2.

Ну значит всё ещё хуже, и хотя тест VS2010 выше показал небольшое улучшение (почти всю память смогла выделить только аж VS2012), видимо на реальных приложениях было всё ещё печально
Re[35]: собеседования, Реверс списка
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 18.10.13 20:53
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

I>>А ты читай, в самом начале говорится про .Net 4, более того, там указано, что вижла была 2010 бета 2.


EP>Ну значит всё ещё хуже, и хотя тест VS2010 выше показал небольшое улучшение (почти всю память смогла выделить только аж VS2012), видимо на реальных приложениях было всё ещё печально


А ты думал я тебе сказки рассказываю ?
Re[42]: собеседования, Реверс списка
От: Evgeny.Panasyuk Россия  
Дата: 18.10.13 20:56
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Так здесь совсем другое, вот класс хештейбла, он спокойно войдет в LOH при определнном размере


Весь хештейбл, или только массив?

I>Или ты имеешь ввиду одним куском шоб сразу все было ? Не совсем ясно, для чего это нужно


Ещё раз, ты что хотел вот тут сказать:

EP>>>>В этой Large Object Heap основные жители это массивы.
EP>>>>Как я понял, Large Object в виде структуры/класса при пороге 85kB получить крайне трудно. [...]
I>>>Наоборот, очень легко.[...]

Как часто в LOH будут находится обычные классы/структуры, а не какие-нибудь массивы?

EP>>>>Аллокацию array-like данных в условиях фрагментации, топик разве не про это

I>>>Они все разные, array-like данные. Если не критично удаление-добавление по индексу, то от деки толку мало.
EP>>Какая сложность добавления элемента в центр std::deque?
I>Ты лучше сразу напиши, с чем ты не согласен, а то я устал уже. Если вставка-удаление в деку хуже константы, то дека никому не нужна.

Тем не менее проблему аллокации array-like данных в условиях фрагментации она решает

I>В моей реализации — константа.


Поздравляю
Re[23]: собеседования, Реверс списка
От: koodeer  
Дата: 18.10.13 21:01
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Ну вот например соединение с базой данных — эта такая абстракция которая течёт из native'а?


На мой взгляд — да.

EP>>>Детерминизм действительно важен, и поэтому в C# есть using, в Java — try-with-resources , в Python — with — и везде требуется подобие IDisposable.


Довольно часто на форумах встречается вопрос, почему не работает такой код:
public SomeDisposableType foo() {
    using(var some = new SomeDisposableType())
        return some;
}

В данном примере объект диспозится ещё до того, как будет возвращён. А если убрать using, то диспозить его нужно вручную. Причём можно и не вызывать диспоз вручную, тогда объект удалится финализатором, но недетерминированно, неизвестно когда. А я считаю, что вполне можно создать такой механизм, который будет удалять объект сразу же, как только он будет использован в последний раз. Только и всего.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.