【问题标题】:Windows 8 XAML Apps - C++ vs C# - User Experience Differences [closed]Windows 8 XAML 应用程序 - C++ 与 C# - 用户体验差异 [关闭]
【发布时间】:2013-01-11 12:24:29
【问题描述】:

Windows 8 XAML 应用程序的用户体验是否会因使用 C# 或 C++ 开发(即托管与本机)而有所不同。

例如,如果应用程序通过包含IValueConverters 等的复杂DataTemplateGridView 绑定到大约500 个数据项,从用户的角度来看,一种语言/技术会比另一种表现更好吗?

我正在尝试确定是否将 C++ 或 C# 用于需要在 ARM 和 X86/X64 架构上良好运行的相当复杂、数据量大的 Windows 商店 XAML 应用程序。

编辑

这里是对我的问题的澄清:

Windows 8 XAML 应用程序的用户体验是否会有所不同(如果有),这取决于它是开发为使用托管 CLR 运行,还是编写为在本机环境中运行

强>

编辑 2

好的 - 忘记编码风格。创建看起来几乎完全相同的 C#(托管)和 C++(非托管)应用程序非常容易,让我们假设出于这个问题的目的,没有实现差异。

  1. 代码相似到无关紧要
  2. 您至少有 500 个数据项
  3. 你有一个 GridView
  4. 您的 ItemTemplate 中有一个复杂的 DataTemplate(两种方案中的相同模板)

问题 - 用户体验是否相同。有没有人有答案,还是我得自己写代码自己试试????

【问题讨论】:

  • 开发语言与此有什么关系? “相当复杂”和“数据量大”是模糊的以获得好的答案。担心性能时:测试
  • 开发语言与它有关,因为一个会生成托管可执行文件,而另一个会生成非托管可执行文件
  • 速度几乎不依赖于编程语言。这取决于设计师/程序员的编程技能。
  • 但是 c++ XAML 应用程序将运行在与 C# 不同的技术上 - 这是我的观点(即 c++ 不会在 CLR 等上运行)
  • 我认为语言/框架之间可能会有差异,但这些差异在有效实现和糟糕实现之间的差异之前就显得苍白无力。如果您真的想选择性能,请获取一些数字。

标签: c# c++ xaml windows-8 windows-runtime


【解决方案1】:

它不会依赖于 C# 与 C++。

Windows XAML 严重依赖 GPU,并且假设您使用合理编写的代码和具有足够时间复杂度的算法,C# 和 C++ 应用程序在与 UI 相关的所有任务上的表现都相似。

时间要么花在更新 GPU 缓冲区上,要么花在 Windows 或 XAML 库中的某个地方 - 您选择的语言不会在任何地方产生影响。

【讨论】:

  • +1 是一个很好的答案,但我想知道在您的 ValueConverters 或 DataTemplateSelectors 中跳入和跳出托管代码是否会对渲染线程产生影响
  • 不,不会。事先不要担心这种事情。过早的优化和所有...
  • 我仍然不相信在托管和非托管世界之间不断跳跃的代码不会产生影响。 DataBindings 依赖于绑定机制的性能。非数据绑定 XAML 应用程序肯定不会受到影响,但是当您将 CLR 世界中的数据添加到组合中时,我不确定您是否正确
  • 我希望除非您的数据不断变化 - 您不会看到 C++/C# 之间的差异。
  • 但是如果你使用 IValueConverter 和 DataTemplateSelector 那么你的数据将不得不不断被评估
【解决方案2】:

ListView 中的 500 个项目趋于偏大。大多数占用处理器时间的代码将是 Windows 运行时,渲染 UI 和处理滚动等;并且 C# 和 C++ 都使用完全相同的 UI 运行时。相比之下,花在您自己的代码上的 CPU 时间可能微不足道。您的优化工作主要涉及关注您如何定义项目模板、启用虚拟化等。

因此,实现语言可能对您应用的性能影响不大。选择最有效的开发语言。

【讨论】:

  • C# 和 C++ XAML 都运行本机,但在 C# 场景中,您将随身携带 CLR,如果您在 CLR 中运行 IValueConverters 和 DataTemplateSelectors 之类的东西,您将会跳槽在托管/非托管边界上很多。我试图找出这将是多么重要
  • 无论如何都应该虚拟化 500 个项目的 ListView,因此转换器和模板选择器应该只针对可见的项目运行。
猜你喜欢
  • 2012-12-25
  • 2012-06-25
  • 1970-01-01
  • 2012-08-15
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多