问题标签 [unboxing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala模式匹配中的自动拆箱
在以下代码中,我收到一个编译错误,指出我在“x”上存在类型不匹配:
如何让 Scala 在 match 语句中自动拆箱 someRef?
c# - 对 CLR 中的装箱和拆箱操作进行了哪些性能改进(如果有)?
几个月前我参加了一个研讨会,演讲者发表声明说,自 .NET 1.1 以来,装箱或拆箱操作的一般成本已经降低。我查看了我的(糟糕的)笔记,无法确定该语句是否引用了装箱和拆箱指令,或者是引入了使装箱/拆箱不太可能发生的类(即泛型类型)。
.NET 1.1 和 .NET 4.0 之间的 CLR 装箱相关指令是否有性能改进,如果是,我在哪里可以找到显示收益的测量信息?
c# - 将对象类型数据转换为值类型的最佳方法
我的任务是创建代码,使用数据读取器从数据库中获取数据,我很好奇我可以在下面使用的 3 种方法之间的最佳实践,以从我的数据读取器中转换数据,默认情况下使用一种对象。
这里让我感到困惑的是拆箱部分,根据http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx 装箱和拆箱非常昂贵,应该避免。我知道我可以使用
代替
问题是仍然有方法以比这两种方法更有效的方式转换这些数据,如果没有可能的方法,您更喜欢使用这两种方法中的哪一种。在此先感谢所有帮助和建议都被接受:)
haskell - 在 Haskell 中有效处理稀疏缺失的数据
我正在尝试使用 Haskell 进行数据分析。因为我的数据集相当大(数十万甚至数百万个观察值),所以我希望使用未装箱的数据结构来提高效率,比如 Data.Vector.Unboxed。
问题是数据包含一些缺失值。我想避免将它们编码为“99”或类似的,因为这只是一个丑陋的黑客和潜在的错误来源。从我的 Haskell 新手的角度来看,我可以想到以下选项:
- 未打包值的盒装向量
Maybe
。类似的东西(如果有错误请更正):
data myMaybe a = Nothing | Just {-# UNPACK #-} !a
- (unboxable)元组的未装箱向量,带有指示缺失的布尔元素:
newtype instance Data.Vector.Unboxed.Vector (MyDatum a) = MyDatum (Data.Vector.Unboxed.Vector (Bool,a))
这可能与此问题的 OP 选择的方法相同(模数Int
)Bool
,但唯一的答案似乎没有明确解决缺失的问题值/稀疏性(而不是专注于如何表示整个数组未装箱,而不是作为未装箱向量的装箱向量)。 - 一组未装箱的向量,一个带有值,另一个带有要注入缺失值的索引,或非缺失值的运行长度,或一些等效信息。这可能比选项 2 更可取。如果缺失很少?
我试图保持在向量表示中,而不是像这样,因为它是稀疏的缺失值,而不是数据。
欢迎对这些选项的相对优点/可行性/现成的可用性/可能的性能提出任何评论,或者确实是指向完全不同的替代方案的指针!
编辑:
- 有人指出,答案可能取决于我打算对数据执行什么样的操作。目前,将每个观测值存储在单个向量中似乎比每个变量更方便。由于向量中的条目因此将引用不同的变量,因此不太可能出现类似“折叠”的操作。
- 我猜 2. 会在内部存储“有效位”向量 à la 3. 如果合适的话会自动存储,所以 3. 可以被删除吗?
c# - C# - 装箱/拆箱/类型转换整数的问题。我不明白
我很难理解这一点。考虑以下示例:
我在运行时遇到的具体错误是如果我在 Visual Studio 中进行Specified cast is not valid.
QuickWatch ,我会得到一个.(int)thirdTest
Cannot unbox 'thirdTest' as a 'int'
这到底是怎么回事?
haskell - 寻找«instance (Enum a, Bounded a) => IArray UArray a»
我正在寻找一种方法Enum a => UArray a
(这对我来说很有意义,因为我们可以轻松地将枚举映射到andInt
并返回)toEnum
fromEnum
到目前为止,我试图UArray Int
从Data.Array.Base窃取代码并在这里和那里走私一些toEnum
s 和s:fromEnum
但当然它不会编译:
也没有魔法unboxInt :: Int -> Int#
in GHC.*
,并且模式匹配 onI#
不会产生Int
而是Int#
相反,但以某种方式UArray Int
存在并在Int#
s 上起作用。
我还发现了一篇关于为 newtypes 制作 UArray 的帖子,但它似乎并不适用,因为它依赖于unsafeCoerce
. 我试过了,但它使listArray (0, 54) $ cycle [Red, Yellow, Green]
所有构造函数都变得有趣Blue
。
我在错误的轨道上吗?
更新:
它现在可以工作了,这里是源代码:
- UArrays.hs:http ://hpaste.org/56728
- BenchmarkUArray.hs:http ://hpaste.org/56729
- 制作文件:http : //hpaste.org/56727
arrays - Haskell 从数组转换为未装箱数组会破坏重写规则
我正在尝试将我的程序从使用 Data.Array 转换为 Data.Array.Unboxed。
作为一个快速的旁注:几个地方声明我可以在我的代码中将“Array”更改为“UArray”并添加 Data.Array.Unboxed 的导入,但是我没有混合两种类型的数组,所以我只是导入了 Data.Array .Unboxed 而不是 Data.Array,这就足够了吗?
当我进行切换时,以下重写规则会中断:
这里 win1 win2 和 image 应该都是 UArrays。但是,这无法编译并出现以下错误。
是什么让这模棱两可?为什么当它与 Data.Array 一起使用时会中断?
c# - 在 c#.net 中进行类型转换
我想知道 c# .net 中的类型转换,我有以下代码行。
所以我想知道为什么string s = i and string s = (string)i
不起作用以及使用有什么区别(string)i, i.ToString(), and Convert.ToString(i)
。