- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里有很多关于 MemberwiseClone 的问题,但我找不到任何内容。
据我了解,MemberwiseClone 基本上只是复制一个对象的内存区域,将其转储到其他地方并将其称为该对象的新实例。显然非常快,而且对于大对象来说,这是制作副本的最快方法。对于具有简单构造函数的小对象,创建实例并复制各个属性会更快。
现在,我有一个使用 MemberwiseClone 的紧密循环。由于 MemberwiseClone 总是创建一个新实例,这会导致大量内存分配和重新分配,这对性能来说不是很好。我已经为一个非常大的对象编写了一个自定义副本,该副本将所有属性单独复制到一个现有对象上,总体上比使用 MemberwiseClone 快一点,
我觉得如果我可以获取整个内存块并将其转储到现有对象上,我将获得不错的性能提升,因为 GC 无需担心任何事情。希望我也能摆脱这条消息:
澄清一下,我想尽快将属性从一个现有对象复制到另一个对象。我只需要一个浅拷贝。
Message 2 DA0023: (Average)% Time in GC = 19.30; % Time in GC is relatively high. This indication of excessive amount of garbage collection overhead could be impacting the responsiveness of your application. You can gather .NET memory allocation data and object lifetime information to understand the pattern of memory allocation your application uses better.
我对代码安全没有任何限制,速度是这里游戏的目标。
请不要评论询问这是否真的有必要或谈论过早的优化。
感谢您的帮助。
采纳下面的建议,在对象中嵌入一个结构并将所有属性存储在其中。然后我可以获取该结构的副本以复制单个分配中的所有属性。与逐字段复制相比,这产生了超过 50% 的速度提升,并且与每次使用 MemberwiseClone 创建新对象相比,速度提升了大约 60%。
最佳答案
如果您的类不可继承,您可以将类的整个状态存储在公开字段结构中(公开字段,而不是属性!)。这将要求您在所有字段名称前加上结构的名称,这在源代码中会很丑陋,但访问该结构中的字段将与访问直接放置在封闭类中的字段一样快。但是,这样做将使您能够使用简单的赋值语句将结构从一个对象实例复制到另一个对象实例。
关于c# - MemberwiseClone 相当于现有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18086950/
在 Chapel 中以固定增量遍历一系列实数的最惯用方法是什么? C 等效代码为: for (x = 0.0; x start, "Stop must be greater than start");
在编写我的 VBA 宏时,我经常使用“GoTo”以便在不离开 Sub 的情况下跳转到宏的前一部分。现在我正在将我所有的宏转换为 Google Apps 脚本,我正试图找到“GoTo”的等效项。 Sub
作为一个(不幸)对 jQuery 的了解多于 raw javascript 的人,我现在正在学习是时候用原始 javascript 替换我的所有代码了。不,这不是必需的,但对我来说这是一种更简单的学习
当我运行 git help -a它向我显示了内部命令列表、我所有的别名和我所有的外部 git 命令(即我的路径中以 git- 开头的任何可执行文件)。我想要的是一个可以作为 git which 运行的
我正在使用的查询: SELECT COUNT(*), SUM(amount) AS amount, FROM_UNIXTIME(added, '%W (%e/%m)') AS dail
我有一堆我正在调试的脚本,都是嵌套的并且非常讨厌。 只是想知道我是否能够设置一些与 bash 的 -x 选项等效的环境变量。这将为我节省大量时间。 我已经寻找答案,但似乎它不存在 - 希望你们聪明的人
ObjC [MyObject doThisWithString:string?: [MyObject otherString]]; 我如何在 Swift 中执行此操作? extension MyObj
我目前正在运行 Sonar 来对我的代码进行静态分析。当我在分析java文件并想抑制某个警告时,我使用了@SuppressWarnings(nameOfTheWarningOnSonar)注解。我想知
我最近一直在研究 Elixir 和 Akka,这让我想到:Clojure 中的等价物是什么? 我发现了几篇关于代理与 Actor 的“消息吞吐量比较”帖子,但它们来自 8 年前 一个答案曾经是agen
我以前工作的地方,我们使用 Mercurial 进行版本控制。我有一份新工作,我们在那里使用 Subversion。我是 Subversion 的新手。 我发现自己想知道自从我在远程仓库上结帐以来 c
寻找一种等效的剪切和粘贴策略来复制 vim 的“cut til”。如果我真的知道它在 vim 中的名称,我敢肯定这是 googleable,但这是我要找的: 如果我有一个像这样的文本块: foo ba
我有一段 .NET 代码,我想将其移植到 64 位。这些代码基本上是一组对其他 C dll 的 P/Invoke 调用。 C dll 中的函数之一具有参数“size_t”。我应该在我的 P/Invok
开发 iPhone 应用程序的标准开发者平台是什么,例如相当于 Eclipse? 最佳答案 Xcode 是 iOS 开发的标准且唯一(由 Apple 支持)IDE。它也是必需的,因为如果您想要任何开发
我想将某些内容推送到 iPhone 的响应者链上。也就是说,我想将选择器发送到 UIResponder子类,如果它不响应所述选择器,则将其传递给其 nextResponder . 有什么想法吗? 最佳
我需要一个与 SQL 中的此查询等效的 Firebase 查询: select * from your_table where id in (123, 345, 679) 你会如何在 firebase
我有一个很好的解决方案: $.get('getdbstuff.php?type=meta,'.$var_id, function(data){ $(data).appendTo("head")
我正处于 Cassandra 应用程序数据建模的初始阶段。此应用程序具有现有的关系持久层,必须用 Cassandra 替换。 应用程序为用户使用一个名为login_log 的表,它提供所有应用程序中任
如标题所述,TensorFlow 是否存在与 numpy.all() 函数等效的函数来检查 bool 张量中的所有值是否为 True?实现此类检查的最佳方法是什么? 最佳答案 使用tf.reduce_
在 Stata 中,如果我有以下变量:var1、var2、var3、var4、var5 和 var6,我可以使用命令 var* 选择所有它们。 R 有类似的功能吗? 最佳答案 “dplyr”包中的se
我正处于 Cassandra 应用程序数据建模的初始阶段。此应用程序具有现有的关系持久层,必须用 Cassandra 替换。 应用程序为用户使用一个名为login_log 的表,它提供所有应用程序中任
我是一名优秀的程序员,十分优秀!