powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Максимальный размер ConcurrentDictionary в 32-битных приложениях
25 сообщений из 196, страница 7 из 8
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458789
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Так что пока вопрос открыт.Всё очевидно. Производительность: С++. Надёжность: C#.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458792
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для статистики: результат для i7-4770@3.40GHz:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
D:\Trash\1>cs.exe
Started C# safe...
Elapsed: 6494 miliseconds
Started C# unsafe...
Elapsed: 6568 miliseconds

D:\Trash\1>cpp.exe
Started C++ pointer...
Elapsed: 6927 miliseconds
Started C++ array...
Elapsed: 7035 miliseconds
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458810
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВсё очевидно. Производительность: С++. Надёжность: C#.
Да не очевидно!
У меня на С++ получилось существенно медленнее.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458814
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Алексей КВсё очевидно. Производительность: С++. Надёжность: C#.
Да не очевидно!
У меня на С++ получилось существенно медленнее.Не думаю, что в этом виноват С++. :-)
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458818
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныДля статистики: результат для i7-4770@3.40GHz:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
D:\Trash\1>cs.exe
Started C# safe...
Elapsed: 6494 miliseconds
Started C# unsafe...
Elapsed: 6568 miliseconds

D:\Trash\1>cpp.exe
Started C++ pointer...
Elapsed: 6927 miliseconds
Started C++ array...
Elapsed: 7035 miliseconds
Можно ещё сравнить работу под разными версиями JIT .Net Framework.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458881
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЗатраты на поддержку безопасного кода в .Net таки дают о себе знать. Даже если проверка границ массивов где-то и выносится на этап компиляции, то далеко не везде. Не думаю, что компиляция под конкретный процессор может компенсировать эти затраты.
Согласен. Поинт в другом.
- Байткод можно оптимизировать в зависимости от конкретной нагрузки.
т.е. например проверку условий в switch можно сделать так, что частые используемые проверяются первыми.
Вызов виртуалной функции заменить на прямой вызов. И много других фокусов.
- Байткод можно в приципе так-же запустить в "опасном" режиме.
В любом случае с байт-кодом можно работать динамически.
По аналогии с базами данных: статичный код исполнения запроса vs. оптимизатор и планировшик.
И подводя обший итог ИМХО: писать статичный код на С/С++ можно уже вчерашний день.
Для меня лично пока больше всего в С# нехватает некоторых битовых операций (поиск младшего/старшего установленого/сброшеноого бита) и некоторые устарелые принцыпй в стандартной библиотеке, которые ташятся из совместимости.
Но будушее выглядит многообешаюшим.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458887
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНе думаю, что в этом виноват С++. :-)
В этой теме я приводил цикл, на который приходится почти вся работа и который буквально переносится из C++ в C# и обратно.
Ваша версия: кто виноват? :)
Моя: компилятор C++ в VS2010.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458910
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®В этой теме я приводил цикл, на который приходится почти вся работа и который буквально переносится из C++ в C# и обратно.
Ваша версия: кто виноват? :)
Моя: компилятор C++ в VS2010.
В архиве твой тест: исходники и exe. Специально откомпилировал MSVC 6 (1998 года выпуска)

i7-6700K
Код: plaintext
1.
2.
3.
Test1() C++ shiftcnt=1000000000  check=899500816  time 901 ms
Test2() C++ shiftcnt=1000000000  check=899500816  time 877 ms
Test1() C# shiftcnt=1000000000  check=899500816  time 1092 ms
Test2() C# shiftcnt=1000000000  check=899500816  time 1228 ms

i7-3770K
Код: plaintext
1.
2.
3.
Test1() C++ shiftcnt=1000000000  check=899500816  time 1046 ms
Test2() C++ shiftcnt=1000000000  check=899500816  time 1235 ms
Test1() C# shiftcnt=1000000000  check=899500816  time 1506 ms
Test2() C# shiftcnt=1000000000  check=899500816  time 1704 ms

Просто создать пустой проект "Win32 Console application", добавить туда TestARcpp.cpp и компилировать в Release. Может ты в Debug запускаешь?
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458984
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TМожет ты в Debug запускаешь?
Точно нет. В Release.

Не побоялся запустить Ваши .exe (а то время сейчас не простое) :). Спасибо!

Что сказать?
C++ выиграл однозначно у C#.
Что интересно:
1)Для C++ варианты цикла дают практически одно время, разница 10 или 20 мс то в пользу первого, то второго (например, 1470 и 1450 мс).
2)Для C# Test2() однозначно дольше, хотя и совсем не так сильно, как у меня. Типично 2130 и 2230 мс.

Как дойдут руки скомпилирую у себя, сравню.

Правильно ли я понял, что Ваш вариант на C++ скомпилирован в VS98, а C# - в VS2015?
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39458990
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да: i3-2120 , 3309 МГц .
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39459011
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Dima TМожет ты в Debug запускаешь?
Точно нет. В Release.
Попробуй с нуля проект создать.
Может у тебя оптимизация выключена? В свойствах проекта C/C++ => Optimization должно стоять /O2
Попробовал отключить /Od стало втрое медленнее, результат i7-6700K
Код: plaintext
1.
Test1() C++ shiftcnt=1000000000  check=899500816  time 3722 ms
Test2() C++ shiftcnt=1000000000  check=899500816  time 3034 ms

AR®Правильно ли я понял, что Ваш вариант на C++ скомпилирован в VS98, а C# - в VS2015?
Правильно.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39459037
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39459092
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё 1 вопрос не даёт мне покоя.
Получится ли из консольного приложеньица Win32 на C++ работать с БД MS SQL Server?
И, если да, то через что? OLEDB ?
В C# я перешёл с OLEDB на System.Data.SqlClient и меня всё устраивает.
А как быть в C++ ?
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39459120
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®И ещё 1 вопрос не даёт мне покоя.
Получится ли из консольного приложеньица Win32 на C++ работать с БД MS SQL Server?
Без разницы: консольное или с гуем.
AR®И, если да, то через что? OLEDB ?
В C# я перешёл с OLEDB на System.Data.SqlClient и меня всё устраивает.
А как быть в C++ ?
Понятия не имею, не работал с БД из С/С++. Вместе с MS SQL ставится SDK для С/С++. Наверно и примеры его использования есть на сайте MS.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39459775
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВместе с MS SQL ставится SDK для С/С++. Наверно и примеры его использования есть на сайте MS.

Есть только sqlncli.h / sqlncli10.lib. Примеров нет. Может в Developer Edition какой-нибудь и есть они.
Вообще, поискав урывками сегодня, понял, что найти законченный пример работы с БД MS SQL на C++ - нетривиальная задача. :))
Более-менее написано здесь , но у меня не заработало. И, как я понял, там через ODBC, а я не очень этого хочу.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39459849
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®,
http://www.cyberguru.ru/programming/visual-cpp/odbc-using.html
Вообще плюсы немного для другого.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39460175
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ http://www.cyberguru.ru/programming/visual-cpp/odbc-using.html

Спасибо. Возможно, в выходные поразбираюсь.
Вообще, ценность C++ (быстродействие в целочисленной арифметике) для моих целей оказалась неподтверждённой.
А тут рассмотрел, что в System.Data.SqlClient ест аналог BCP, а значит, просматривается возможность сэкономить время не на работе, а на записи результатов в БД (порядка миллионов записей).

Всё более хочется "остаться" на C#.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39460197
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®,
Если нужна скорость плюсов и возможности .NET Framework, то бете сюда
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39460264
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Вообще, ценность C++ (быстродействие в целочисленной арифметике) для моих целей оказалась неподтверждённой.
C# в этом не сильно проигрывает, а иногда даже выигрывает.
AR®А тут рассмотрел, что в System.Data.SqlClient ест аналог BCP, а значит, просматривается возможность сэкономить время не на работе, а на записи результатов в БД (порядка миллионов записей).
Это все обертки над BULK INSERT , который можно вызывать откуда угодно.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39460297
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВAR®,Если нужна скорость плюсов

Так не получилось её, скорости, даже в unmanaged варианте. Пока не понял, почему.

Вчера вечером прочёл это это , что склонило бы весы в пользу C++, но если оно же доступно в System.Data.SqlClient , то пусть C#.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39460299
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЭто все обертки над BULK INSERT
Ничего подобного. BULK INSERT импортирует файл, и только из расположения, которое видит сервер. Внутри SqlBulkCopy - обертка над
INSERT BULK , спец. синтаксиса только для внешних приложений, работающих с TDS-протоколом . Этот протокол принимает и передает на сервер потоковые данные, за счет чего и обеспечивает высокую производительность вставки (ну, и плюс минимальное журналирование). Делать самому всё вот это (включая разбирательства с quoted names, коллейшенами, маппингами колонок, контролем соответствия типов данных, итд) - проще сразу убиться. Особенно при наличии готового класса.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39460307
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЭто все обертки над BULK INSERT , который можно вызывать откуда угодно.

Правильно. Весь вопрос в том, как удобно её вызвать, когда, например, есть массив из нескольких миллионов записей. Сохранить в файл, а потом звать bcp.exe? Тогда программа становится не самодостаточной, кроме того, bcp.exe - тоже не самодостаточна и хочет видеть нескольких dll из состава SQL сервера. Класть файл на сервер (а потом звать в запросе BULK INSERT) тоже далеко не всегда возможно.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39460311
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®,
Есть вопросы - заведи свою тему, а то твои вопросы не коррелируют с размером ConcurrentDictionary.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39460315
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AR®Правильно.
Неправильно.
...
Рейтинг: 0 / 0
Максимальный размер ConcurrentDictionary в 32-битных приложениях
    #39460321
AR®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВтвои вопросы не коррелируют с размером ConcurrentDictionary

Согласен, не коррелируют. Но "генетически" происходят от него в рамках решения одной задачи. Да и плодить темы не очень здорово. В конце концов, автор этой темы - я. :)
...
Рейтинг: 0 / 0
25 сообщений из 196, страница 7 из 8
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Максимальный размер ConcurrentDictionary в 32-битных приложениях
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]