想问问asp.net 的system.web.caching一系列api把数据存到内存还是进程内的缓存(CPU的多级缓存);
CPU内存和进程内缓存(CPU的多级缓存)看了是不一样的,而且两者存取速度不一样,能否说说传统.net应用有哪些方法或框架可以操作这两个的,还有asp.net core的哪些方法。
看书不要光看名词。cpu缓存,应用级的代码一般是管不到的。
缓存是相对于某方面能力较差而使用另一种硬件中间化的技术手段,比如内存比硬盘快,内存比网络快,我们以内存为缓存方式,比如并口一次性速率比串口快,过程必然需要缓存(除非硬件级移位寄存器),比如内存空间过小而选择廉价的硬盘缓存。
你好,那是不是应用级代码(system.web.caching的api)存取缓存都是直接存到所谓的内存条里面?
@tkfly: 那你试试可以写多大内容~~~是不是远远超过L1,L2,这个缓存都是用于cpu指令集运算的缓存,比如指令连加,寄存器得到一次电气化运算结果,如果搬到内存,那么往返会很慢,比如下一条执行指令如果完全从硬盘->内存->寄存器得到也会很慢,比如预加载算法预先加载到L中,那么可以很快。
这个api可以看源码的,你也可以看到的,如果想session这些你都能直接随便用到了cpu cache,基本上操作系统就废了。当然运算过程中,system.web.caching的部分数据是可能到cpu cache的。
@花飘水流兮: 你好,我看源码,大概看到了是放到内存(宏观来说就是内存条),不过还是想得到你的肯定和说法,因为我目前看到java有个别框架能访问到进程内缓存的,而看到网络上对进程内缓存的说法就是L1,L2(也可能是我看错进程内缓存的说法,进程内缓存可能就是应用级代码做的缓存),所以我在想C#有没有框架能访问?求教
@tkfly: 兄弟在c#、java的世界是没意义的事。
等你写硬件玩玩会更清楚,如果你很有兴趣,你可以查询intel等cpu规格,看看引脚和指令规格。提供了就可能可行(中间还有很多层)。低级芯片根本没这玩意儿。
至于你所谓的“框架”,这个没玩过,我认为你跑在os上的api的话,应该是找不到的,这个绝对是崩系统的,除非intel哪天开心了在L cache给你分个user模式。
@花飘水流兮: 感谢你的回答
都是内存缓存
没有方法可以操作到CPU的缓存。
你好,那是不是应用级代码(system.web.caching的api)存取缓存都是直接存到所谓的内存条里面?