数据模板有多贵? [关闭]

2024-01-26

I have 性能问题 https://stackoverflow.com/q/38248842/1997232我正在努力挖掘原因。

到目前为止,我不确定问题是什么,我的下一个假设是数据模板。问题:使用数据模板有多昂贵?

让我们看看单个数据模板有多贵。下面是mcve.

xaml:

<Window.Resources>
    <DataTemplate DataType="{x:Type local:Item}">
        <StackPanel>
            <TextBlock Text="{Binding Property1}" />

            ... we will add here more things to see difference
        </StackPanel>
    </DataTemplate>
</Window.Resources>
<ContentControl Content="{Binding Content}" />

cs:

class Item : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public string Property1 { get; set; } = "1";
    public string Property2 { get; set; } = "2";
    public string Property3 { get; set; } = "3";
    public string Property4 { get; set; } = "4";
    public string Property5 { get; set; } = "5";
}

class ViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public object Content { get; set; } = new Item();
}

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new ViewModel();
    }
}

以下是一些结果(使用 VS Profiler 测量 - 应用程序时间线以毫秒为单位):

Test Nb Ni  Presenter    Items                         Bindings
A    1  1   2.42 (0.57)                                1.8
B    5  5   3.37 (1.15)                                1.8, 0.07, 0.1, 0.05, 0.08
C    5  10  3.63 (1.27)  0.06, 0.07, 0.08, 0.04, 0.04  1.7, 0.08, 0.05, 0.06, 0.05
D    0  1   3.38 (0.6)   2.7

解释:

  • Nb——结合数;
  • Ni - 项目(元素)数量;
  • 演讲者 - 时间ContentPresenter(总计/自我);
  • 物品 - 没有约束时间的物品(如适用);
  • Bidings - 具有绑定时间的项目(如果适用)。
  • A - 是初始测试,只有一个TextBlock与单Text捆绑。
  • B - 又添加了 4 个TextBlock绑定Text到其他属性。
  • C - 又添加了 5 个TextBlock与静态Text="123".
  • D - 删除除 1 之外的所有内容TextBlock与静态文本。

据我所见,模板本身需要0.5 ms。创建第一个项目的成本很高(为什么???)。

老实说,我不确定这种衡量性能的方法的正确性。因此我的问题。我应该避免数据模板并开始使用旧的winforms /questions/tagged/winforms手动填充控件以获得性能的方式还是什么?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据模板有多贵? [关闭] 的相关文章

  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 私有模板函数

    我有一堂课 C h class C private template
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐

  • !!处理请求时出现意外错误:无法分配内存

    请帮助我解决这个错误 使用 ruby 脚本将记录从文本文件加载到数据库时出现此错误 如果我使用少量记录加载到数据库中 它就可以正常工作 但如果有大量记录 则失败 CSV foreach fileName do line completePa
  • Microsoft Graph API:访问控制允许来源

    我正在尝试集成 Microsoft Graph 身份验证和访问共享点以及用户的图形配置文件和图片 我遵循了他们的文件https developer microsoft com en us graph docs authorization a
  • Qt3D默认制服和属性

    我开始学习通过 QML 使用着色器 但找不到任何讨论传递给着色器的默认统一和属性值的参考资料 在某些示例中 我们可以看到其中的几个 例如顶点位置 or 模型视图投影 这也被传递为mvp 但是没有包含我们可以使用的所有变量的清晰列表 在调查
  • 跨区域小数/双精度解析

    事实上 我有多个可以生成数字数据的系统 它们以文本文件的形式存储在某些网络服务器上 有些系统使用小数点作为分数分隔符 有些系统也使用小数点逗号 应用程序 胖客户端 net 2 0 也可以在任一类型的系统上运行 因此 经过一番绊倒后 我这样做
  • Count 总是返回 1...但是它存在吗?

    我试图在创建文件名之前检查特定类别的 评论 列中是否已存在文件名 如果它已经存在 我想将今天的日期添加到名称中以使其成为唯一的文件名 我似乎无法使用计数来查找它是否存在 当我 echo checkfile 时 无论文件存在与否 它总是返回
  • 三角矩阵系数索引号的算法

    我认为这一定很简单 但我无法正确理解 我有一个 MxM 三角矩阵 其系数逐行存储在向量中 例如 M m00 m01 m02 m03 m11 m12 m13 m22 m23 m33 存储为 coef m00 m01 m02 m03 m11 m
  • 为什么 Mathematica 会打破模块中正常的作用域规则?

    正如最近的一篇文章中指出的post https stackoverflow com questions 2733239 lexical and dynamic scoping in mathematica local variables w
  • 在 Angular 4 模板中显示地图内容

    我正在尝试在我的模板中显示地图 myMap Map
  • Azure 上的静态类和多个实例

    我正在构建一个将部署在 Azure 上的应用程序 如果我使用静态类 所有实例是否都可以访问相同的静态对象 或者每个实例在生成每个实例时都会实例化自己的静态对象 static每个 AppDomain 字段都有一个值 它们显然不会在计算机之间共
  • 如何在 spmd 块中索引共分布式数组

    我正在做一个非常大的计算 大气吸收 其中有很多单独的窄峰 最后全部加起来 对于每个峰 我预先计算了峰形函数值高于我选择的阈值的范围 然后我逐行将峰添加到我的光谱中 下面给出了一个最小示例 X 1 1e7 K numel a count th
  • Javascript对函数数组执行“reduce”如何实现函数组合?

    我在中遇到了这种模式redux compose功能 我仍然不明白在下面的示例中如何从最后一个而不是从第一个开始评估函数 function f2 a return a a function f3 a return a a a function
  • 如何修复 sapper/svelte 中的 localStorage 错误

    import writable from svelte store Read the current token from LocalStorage on boot const token writable localStorage get
  • 如何让 Windows Phone 应用程序像默认应用程序一样加载得更快?

    我发现 Windows 手机中的默认应用程序 如 People Calculator etc 根本不需要时间加载 他们甚至没有启动屏幕图像 我尝试从应用程序的项目中排除 SplashScreenImage jpg 并在手机上运行它 我的应用
  • squeel 中的嵌套查询

    简短版本 如何在 squeel 中编写此查询 SELECT OneTable my count FROM OneTable JOIN SELECT DISTINCT one id count AS my count FROM Another
  • Git Bash 安装 React-Scripts 时出现错误“UNKNOWN:未知错误,scandir 'E:\...\node_modules\@babel\.helper-annotate-as-pure.DELETE'”

    UNKNOWN unknown error scandir E Sorted Capstone WOO WOO net WOO WOO net project FrontEnd frontendapp node modules babel
  • JSON.stringify 缺少属性

    我正在编写一个自定义 console error 函数 以便每次发生错误时我都会收到一封电子邮件 要在电子邮件正文中发送错误 我使用JSON stringify 问题是它缺少一些属性 请参阅下面的两张图片 Email In console
  • 在MVC中使用Json.NET自动将mongodb ObjectId重新设置为字符串

    我有一个 MVC net 项目 并且正在使用 mongodb 在我的一些控制器中 我返回带有 ObjectId 的 JsonResult 我希望将 ObjectId 序列化为字符串 我发现了类似的问题并使用了这个答案 使用自定义JsonCo
  • 选择具有最小计数的行 (*)

    假设我有一个带有列的简单投票表 id primaryKey token int candidate int rank int 我想提取具有特定排名的所有行 按候选人分组 最重要的是仅使用最小计数 到目前为止我已经达到了 SELECT can
  • 自动布局(约束)与自动调整大小蒙版(弹簧和支柱)

    这些布局系统可帮助您调整大小 无论屏幕大小和方向如何 如果我有自动调整大小掩模 弹簧和支柱 这样的简单解决方案 为什么我应该使用自动布局 约束 当我开始使用自动布局时我也有同样的问题 自动布局可以做到这一切弹簧和支柱为我们提供以及更多 自动
  • 数据模板有多贵? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 I have 性能问题 https stackoverflow com q 38248842 1997232我正在努力挖掘原因 到目前为止 我不