小编Chu*_*huu的帖子

通过计算和存储逆数来快速整数除法?

据我了解,当前进行整数除法的方法是在硬件中计算倒数,然后执行乘法。

我有一些 C# 代码,其中大量时间花费在整数除法上,并且值很少更改,以至于可以缓存它们的值。

我想在软件中执行硬件算法,即计算除数的倒数并将所有这些除法转换为乘法。有谁知道执行此转换的算法,或者更好的是,CLR 中是否有某些东西可以自动执行此转换?

c# inverse division

3
推荐指数
1
解决办法
1413
查看次数

使用ConcurrentDictionary获取"AddOrReplace"功能

我使用ConcurrentDictionary来创建一个简单的对象缓存.如果密钥不存在,我试图以原子方式将项添加到集合中,或者如果密钥已存在则替换前一项,即"AddOrReplace".似乎没有明显的方法来做到这一点.有人可以提出建议吗?

c#-4.0

2
推荐指数
1
解决办法
1601
查看次数

_mm_sfence 内在函数和 SFENCE 指令之间有什么关系?

我正在试验非时间指令,并且已经熟悉具有普通加载/存储的围栏如何操作。

Intel 定义了一个与非时间操作相关的内在,_mm_sfence,手册将其定义为:

保证每个前面的商店在任何后续商店之前都是全局可见的。

我对这个操作有一些疑问。

  1. 这只是插入 SFENCE 指令吗?如果不是,这意味着什么?
  2. 如果这不仅仅是一个 SFENCE,那么 SFENCE 指令是否也带有非临时存储的排序保证?

x86 memory-barriers

2
推荐指数
1
解决办法
177
查看次数

如何使用“最近”时间戳而不是“asof”时间戳连接两个 KDB 表?

我试图以与“as of”连接非常相似的方式连接两个表,除了不是选择具有最后一个时间戳的行进行连接(假设它们按时间顺序排序),我想加入最接近的时间戳。例如:

q)t: ([]time:10:00:06 10:00:03 10:00:04;sym:`msft`ibm`ge;qty:100 200 150)
q)t
time     sym  qty
-----------------
10:00:06 msft 100
10:00:03 ibm  200
10:00:04 ge   150

q)q: ([]time:10:00:00 10:00:00 10:00:02 10:00:07 10:02:00;sym:`ibm`msft`msft`msft`ibm;px:100 99 101 102 98 )
q)q
time     sym  px
-----------------
10:00:00 ibm  100
10:00:00 msft 99
10:00:02 msft 101
10:00:07 msft 102
10:02:00 ibm  98
Run Code Online (Sandbox Code Playgroud)

加入时的标准:

q)aj[`sym`time;t;q]
time     sym  qty px
---------------------
10:00:06 msft 100 101 //10:00:02 is closest timestamp that is not greater than 10:00:06, so that px is chosen
10:00:03 …
Run Code Online (Sandbox Code Playgroud)

database kdb

2
推荐指数
1
解决办法
104
查看次数

标签 统计

c# ×1

c#-4.0 ×1

database ×1

division ×1

inverse ×1

kdb ×1

memory-barriers ×1

x86 ×1