|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®Так что пока вопрос открыт.Всё очевидно. Производительность: С++. Надёжность: C#. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 12:40 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Для статистики: результат для i7-4770@3.40GHz: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 12:42 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Алексей КВсё очевидно. Производительность: С++. Надёжность: C#. Да не очевидно! У меня на С++ получилось существенно медленнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 12:59 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®Алексей КВсё очевидно. Производительность: С++. Надёжность: C#. Да не очевидно! У меня на С++ получилось существенно медленнее.Не думаю, что в этом виноват С++. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 13:05 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныДля статистики: результат для i7-4770@3.40GHz: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 13:12 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Алексей КЗатраты на поддержку безопасного кода в .Net таки дают о себе знать. Даже если проверка границ массивов где-то и выносится на этап компиляции, то далеко не везде. Не думаю, что компиляция под конкретный процессор может компенсировать эти затраты. Согласен. Поинт в другом. - Байткод можно оптимизировать в зависимости от конкретной нагрузки. т.е. например проверку условий в switch можно сделать так, что частые используемые проверяются первыми. Вызов виртуалной функции заменить на прямой вызов. И много других фокусов. - Байткод можно в приципе так-же запустить в "опасном" режиме. В любом случае с байт-кодом можно работать динамически. По аналогии с базами данных: статичный код исполнения запроса vs. оптимизатор и планировшик. И подводя обший итог ИМХО: писать статичный код на С/С++ можно уже вчерашний день. Для меня лично пока больше всего в С# нехватает некоторых битовых операций (поиск младшего/старшего установленого/сброшеноого бита) и некоторые устарелые принцыпй в стандартной библиотеке, которые ташятся из совместимости. Но будушее выглядит многообешаюшим. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 13:57 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Алексей КНе думаю, что в этом виноват С++. :-) В этой теме я приводил цикл, на который приходится почти вся работа и который буквально переносится из C++ в C# и обратно. Ваша версия: кто виноват? :) Моя: компилятор C++ в VS2010. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 14:01 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®В этой теме я приводил цикл, на который приходится почти вся работа и который буквально переносится из C++ в C# и обратно. Ваша версия: кто виноват? :) Моя: компилятор C++ в VS2010. В архиве твой тест: исходники и exe. Специально откомпилировал MSVC 6 (1998 года выпуска) i7-6700K Код: plaintext 1. 2. 3.
i7-3770K Код: plaintext 1. 2. 3.
Просто создать пустой проект "Win32 Console application", добавить туда TestARcpp.cpp и компилировать в Release. Может ты в Debug запускаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 14:33 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Dima TМожет ты в Debug запускаешь? Точно нет. В Release. Не побоялся запустить Ваши .exe (а то время сейчас не простое) :). Спасибо! Что сказать? C++ выиграл однозначно у C#. Что интересно: 1)Для C++ варианты цикла дают практически одно время, разница 10 или 20 мс то в пользу первого, то второго (например, 1470 и 1450 мс). 2)Для C# Test2() однозначно дольше, хотя и совсем не так сильно, как у меня. Типично 2130 и 2230 мс. Как дойдут руки скомпилирую у себя, сравню. Правильно ли я понял, что Ваш вариант на C++ скомпилирован в VS98, а C# - в VS2015? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 15:52 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Да: i3-2120 , 3309 МГц . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 15:55 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®Dima TМожет ты в Debug запускаешь? Точно нет. В Release. Попробуй с нуля проект создать. Может у тебя оптимизация выключена? В свойствах проекта C/C++ => Optimization должно стоять /O2 Попробовал отключить /Od стало втрое медленнее, результат i7-6700K Код: plaintext 1.
AR®Правильно ли я понял, что Ваш вариант на C++ скомпилирован в VS98, а C# - в VS2015? Правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 16:21 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
All options: /Zi /nologo /W3 /WX- /O2 /Ob2 /Oi /Ot /Oy- /GT /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fa"Release\" /Fo"Release\" /Fd"Release\vc100.pdb" /Gd /FU"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll" /analyze- /errorReport:queue ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 16:46 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
И ещё 1 вопрос не даёт мне покоя. Получится ли из консольного приложеньица Win32 на C++ работать с БД MS SQL Server? И, если да, то через что? OLEDB ? В C# я перешёл с OLEDB на System.Data.SqlClient и меня всё устраивает. А как быть в C++ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 17:52 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®И ещё 1 вопрос не даёт мне покоя. Получится ли из консольного приложеньица Win32 на C++ работать с БД MS SQL Server? Без разницы: консольное или с гуем. AR®И, если да, то через что? OLEDB ? В C# я перешёл с OLEDB на System.Data.SqlClient и меня всё устраивает. А как быть в C++ ? Понятия не имею, не работал с БД из С/С++. Вместе с MS SQL ставится SDK для С/С++. Наверно и примеры его использования есть на сайте MS. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 18:34 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Dima TВместе с MS SQL ставится SDK для С/С++. Наверно и примеры его использования есть на сайте MS. Есть только sqlncli.h / sqlncli10.lib. Примеров нет. Может в Developer Edition какой-нибудь и есть они. Вообще, поискав урывками сегодня, понял, что найти законченный пример работы с БД MS SQL на C++ - нетривиальная задача. :)) Более-менее написано здесь , но у меня не заработало. И, как я понял, там через ODBC, а я не очень этого хочу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 15:36 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®, http://www.cyberguru.ru/programming/visual-cpp/odbc-using.html Вообще плюсы немного для другого. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 16:52 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
ЕвгенийВ http://www.cyberguru.ru/programming/visual-cpp/odbc-using.html Спасибо. Возможно, в выходные поразбираюсь. Вообще, ценность C++ (быстродействие в целочисленной арифметике) для моих целей оказалась неподтверждённой. А тут рассмотрел, что в System.Data.SqlClient ест аналог BCP, а значит, просматривается возможность сэкономить время не на работе, а на записи результатов в БД (порядка миллионов записей). Всё более хочется "остаться" на C#. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 09:58 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®, Если нужна скорость плюсов и возможности .NET Framework, то бете сюда ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 10:11 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®Вообще, ценность C++ (быстродействие в целочисленной арифметике) для моих целей оказалась неподтверждённой. C# в этом не сильно проигрывает, а иногда даже выигрывает. AR®А тут рассмотрел, что в System.Data.SqlClient ест аналог BCP, а значит, просматривается возможность сэкономить время не на работе, а на записи результатов в БД (порядка миллионов записей). Это все обертки над BULK INSERT , который можно вызывать откуда угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 11:19 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
ЕвгенийВAR®,Если нужна скорость плюсов Так не получилось её, скорости, даже в unmanaged варианте. Пока не понял, почему. Вчера вечером прочёл это это , что склонило бы весы в пользу C++, но если оно же доступно в System.Data.SqlClient , то пусть C#. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 11:53 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Dima TЭто все обертки над BULK INSERT Ничего подобного. BULK INSERT импортирует файл, и только из расположения, которое видит сервер. Внутри SqlBulkCopy - обертка над INSERT BULK , спец. синтаксиса только для внешних приложений, работающих с TDS-протоколом . Этот протокол принимает и передает на сервер потоковые данные, за счет чего и обеспечивает высокую производительность вставки (ну, и плюс минимальное журналирование). Делать самому всё вот это (включая разбирательства с quoted names, коллейшенами, маппингами колонок, контролем соответствия типов данных, итд) - проще сразу убиться. Особенно при наличии готового класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 11:54 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
Dima TЭто все обертки над BULK INSERT , который можно вызывать откуда угодно. Правильно. Весь вопрос в том, как удобно её вызвать, когда, например, есть массив из нескольких миллионов записей. Сохранить в файл, а потом звать bcp.exe? Тогда программа становится не самодостаточной, кроме того, bcp.exe - тоже не самодостаточна и хочет видеть нескольких dll из состава SQL сервера. Класть файл на сервер (а потом звать в запросе BULK INSERT) тоже далеко не всегда возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 12:02 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®, Есть вопросы - заведи свою тему, а то твои вопросы не коррелируют с размером ConcurrentDictionary. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 12:09 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
AR®Правильно. Неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 12:13 |
|
Максимальный размер ConcurrentDictionary в 32-битных приложениях
|
|||
---|---|---|---|
#18+
ЕвгенийВтвои вопросы не коррелируют с размером ConcurrentDictionary Согласен, не коррелируют. Но "генетически" происходят от него в рамках решения одной задачи. Да и плодить темы не очень здорово. В конце концов, автор этой темы - я. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 12:22 |
|
|
start [/forum/topic.php?fid=20&msg=39458984&tid=1399876]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 281ms |
total: | 446ms |
0 / 0 |