2010-10-29 53 views
1

晚安投中,的SQLite和Int64的到的Int32 C#

我有我在C#中使用ExecuteScalar()命令执行一个SQLite查询。 Object类型变量的结果实际上是Int64类型的值。由于我需要将它转换为Int32,我首先尝试使用Convert.ToInt32,现在我使用的是(Int32)(Int64)Object,虽然我在两者上获得了相同的性能。问题是,这种类型的演员似乎需要额外的6ms才能执行,并且所涉及的方法是应该尽可能快地执行的关键代码......有没有什么方法可以更快地执行演员制作,例如使用,位运算符还是其他一些方法?

以防万一这是不可能的,我真的不明白为什么查询的结果是一个Int64 ...有什么办法可以强制它是一个Int32?

非常感谢。

回答

1

您可以使用数据阅读器而不是执行标量并调用静态getint32函数。不知道这是否会更快。

或者,您可以在返回之前将结果转换为sql查询。再次,这实际上可能会降低整体性能。

+0

非常感谢。第一个建议起作用,速度提高2-3倍。 – Miguel 2010-10-29 21:09:34

+0

我只提到它,因为我有理由怀疑ExecuteScalar只是创建一个datareader并返回第一行/列中的第一个对象。这意味着它正在做一个额外的拳击操作。差异应该是相当微不足道的,但我想这不是在这种情况下。 6ms似乎是一个非常长的时间来执行双重演员(与隐式转换)在盒装然后unboxed int64。您是否在测试测试装置内测试速度? – wllmsaccnt 2010-10-29 22:35:14