Что преимущества там к разработке приложения Win32 в C++ по приложению.NET в C#?

Используйте dt.days , чтобы получить атрибут days как целые числа.

Например:

In [14]: s = pd.Series(pd.timedelta_range(start='1 days', end='12 days', freq='3000T'))

In [15]: s
Out[15]: 
0    1 days 00:00:00
1    3 days 02:00:00
2    5 days 04:00:00
3    7 days 06:00:00
4    9 days 08:00:00
5   11 days 10:00:00
dtype: timedelta64[ns]

In [16]: s.dt.days
Out[16]: 
0     1
1     3
2     5
3     7
4     9
5    11
dtype: int64

В более общем плане - вы можете использовать кнопку .components для доступа к уменьшенной форме timedelta.

In [17]: s.dt.components
Out[17]: 
   days  hours  minutes  seconds  milliseconds  microseconds  nanoseconds
0     1      0        0        0             0             0            0
1     3      2        0        0             0             0            0
2     5      4        0        0             0             0            0
3     7      6        0        0             0             0            0
4     9      8        0        0             0             0            0
5    11     10        0        0             0             0            0

Теперь, чтобы получить атрибут hours:

In [23]: s.dt.components.hours
Out[23]: 
0     0
1     2
2     4
3     6
4     8
5    10
Name: hours, dtype: int64

16
задан Joshua Carmody 18 February 2009 в 20:11
поделиться

8 ответов

  • Производительность (определенные ситуации, такие как графика)
  • Объем потребляемой памяти (поскольку Mancuso сказал)
  • Использование существующих библиотек
  • Никакая потребность во времени выполнения
  • Более прекрасное управление

Для списка некоторых.

Однако можно также хотеть посмотреть на вопрос от противолежащего угла для справедливой оценки который язык использовать.

Кроме того, Вы могли использовать C++ / CLI для слияния и собственного компонента и кода .NET.

14
ответ дан 30 November 2019 в 15:32
поделиться

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

Некоторые люди могут быть разочарованы видеть, что Ваше приложение на 2 МБ на самом деле требует, чтобы еще 20 МБ загрузки платформы и надоедливого процесса установки работали. Если они не уверены, нужно ли им действительно Ваше приложение во-первых, они могли бы просто удалить его прежде даже дать ему попытку и обратиться к конкурирующему продукту.

18
ответ дан 30 November 2019 в 15:32
поделиться

Если Ваше приложение должно смочь работать без установки (т.е. если Вы не можете или не должны делать чего-то, любят, устанавливают платформу.NET), Вы не можете рассчитывать на.NET, находящуюся на машине окон (предварительная Vista). Много служебных приложений может упасть в этой категории.

8
ответ дан 30 November 2019 в 15:32
поделиться

я рекомендовал бы записать каждое настольное приложение в [1 112] управляемый код ..NET/C# является большой платформой, чтобы сделать так.

Мои причины:

  1. Потеря производительности незначительна . Google для сравнительных тестов, если Вы не делаете честное слово. Что имеет значение, больше сам код. Можно записать O (n^m) алгоритмы в C++ или.NET/C#. Механизмы JIT являются очень сформировавшимися в эти дни.
  2. Неуправляемый C++ имеет главные недостатки когда дело доходит до [1 114] поблочное тестирование, дразня и осуществляя рефакторинг . Это является очень громоздким и негибким. Отражение позволяет управляемому коду делать такие вещи очень удобными.
  3. Развертывание является маленькой проблемой. Однако создание установки, которая проверяет на необходимые предварительные условия.NET и устанавливает их автоматически, является легкой задачей.
  4. Компиляция более быстра, никакой компоновщик ! Это даже происходит в фоновом режиме при редактировании кода.
  5. .NET поддержка библиотеки является путем лучше и инструментом для очистки, чем STL, MFC и повышение.
  6. Никакие заголовочные файлы и макросы . Они просто подвержены ошибкам.
  7. безопасность ! До свидания переполнение буфера, неверные указатели, неинициализированные переменные...
  8. Исключения . Ясная иерархия исключения в.NET. Исключения C++ испорчены.
7
ответ дан 30 November 2019 в 15:32
поделиться

Объем потребляемой памяти. Но если Вы не разрабатываете для сильно затрудненной мудрой памятью машины, это действительно не должна быть проблема для большинства приложений.

2
ответ дан 30 November 2019 в 15:32
поделиться

Если можно предоставить зависимость от стека, пойдите для.NET, современной, изящной, мощной и в результате намного более быстрой для разработки для.

, Но понимают, что Вы объединяете свое приложение в цепочку к нему - на язык и платформу при предвидении будущего, где можно хотеть выйти из этого, затем лучше думайте дважды.

Win32 является старым и неуклюжим, но он продолжает работать фактически любая версия Windows без дополнительных зависимостей, и Ваш код может быть в простом, портативном, C/C++.

2
ответ дан 30 November 2019 в 15:32
поделиться

+1 для того, чтобы не иметь необходимость потребовать пакета/установки.NET на целевой машине (машинах). Это - все еще большая проблема.

, Когда все машины будут иметь моно или СЕТЕВОЙ, это не будет такое грандиозное предприятие.

2
ответ дан 30 November 2019 в 15:32
поделиться

Две вещи, о которых я могу думать.

  1. Защита интеллектуальной собственности. Кому-то бесконечно более трудно перепроектировать Неуправляемое приложение C++. Управляемый .NET или приложения Java могут легко декомпилироваться дело обстоит не так с Неуправляемым C++.

  2. Скорость. C++ ближе к аппаратным средствам и имеет меньший объем потребляемой памяти как другой упомянутый комментарий. Поэтому большинство видеоигр продолжает писаться в C++ и встроенном ассемблерном коде.

0
ответ дан 30 November 2019 в 15:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: