`
jimmee
  • 浏览: 530920 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
在高性能的计算中,我们常说缓存失效(cache-miss)是一个算法中最大性能损失点。 近些年来,我们的处理器处理能力的增长速度已经大大超过了访问主内存的延迟的缩短。 通过更宽的,多通道的总线,到主内存的带宽已经大 ...
原文:False Shareing && Java 7 (依然是马丁的博客)  译者:杨帆 校对:方腾飞 在我前一篇有关伪共享的博文中,我提到了可以加入闲置的long字段来填充缓存行来避免伪共享。但是看起来Java 7变得更加智慧了,它淘汰或者是重新排列了无用的字段,这样我们之前的办法在Java 7下就不奏效了,但是伪共享依然会发生。我在不同的平台上实验了一些列不同的方案,并且最终发现下面的代码是最可靠的。(译者注:下面的是最终版本,马丁在大家的帮助下修改了几次代码)
作者:Martin Thompson  译者:丁一 缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统中并行线程实现可伸缩性最重要的限制因素。有人将伪共享描述成无声的性能杀手,因为从代码中很难看清楚是否会出现伪共享。 为了让可伸缩性与线程数呈线性关系,就必须确保不会有两个线程往同一个变量或缓存行中写。两个线程写同一个变量可以在代码中发现。为了确定互相独立的变量是 ...
原文地址  作者:Mechanical Sympathy  译者:潘曦  校对:Simon-SZ ,方腾飞 即使是资深的技术人员,我经常听到他们谈论某些操作是如何导致一个CPU缓存的刷新。看来这是关于CPU缓存如何工作和缓存子系统如何与执行核心交互的一个常见误区。本文将致力于解释CPU缓存的功能以及执行程序指令的CPU核心如何与缓存交互。我将以最新的Intel x86 CPU为例进行说明,其他CPU也使用相似技术以达到相同目的。 绝大部分常见的现代系统都被设计成在多处理器上共享内存。共享内存的系统都有一个单独的内存资源,它会被两个或者更多的独立CPU核心同时访问。核心到主存的延迟变化范围 ...
摘要:Tindie是一家专门做DIY硬件特卖的网站,自成立以来,两年多的时间里积累了极高的人气,上线超过2000个独立硬件产品。有人评价Tindie对于硬件设计和制造的作用,就如同开源对于软件开发行业的作用一样,意义非凡。 【 ...
作/译者:叶金荣(imysql#imysql.com>),来源:http://imysql.com,欢迎转载。 起因:在innodb表上做count(*)统计实在是太慢了,因此想办法看能不能再快点。现象:先来看几个测试案例,如下一、 sbtest 表上的测试 show create table sbtest\G *************************** 1. row *************************** Table: sbtest Create Table: CREATE TABLE `sbtest` ( `aid` bigint(20) un ...
刚看了这篇博客 http://coolshell.cn/articles/10192.html   看完后, 觉得很有体会, 关于结论部分, 也补充一下自己的感受   综上所述,下面是我觉得数据挖掘或机器学习最重要的东西:   1)数据的质量。分为数据的标准和数据的准确。数据中的杂音要尽量地排除掉。为了数据的质量,大量人肉的工作少不了。 jimmee注:  是的, 不管数据量多大, 数据的质量如何, 噪音如何, 最后能否得出标准化的数据, 对后期的分析至关重要,  如果没有准确的数据,  那么得出的结论可能是相反的. 后期再花费多大的力气, 算法优化都是扯淡.     2) ...
陈皓的博客:   http://coolshell.cn/ http://blog.csdn.net/haoel   博客教主的博客: http://www.ha97.com/   云风的blog   http://blog.codingnow.com/   林昊的博客   http://bluedavy.me/ http://hellojava.info/   Gustavo Duarte http://duartes.org/gustavo/blog/   Jeff Preshing http://preshing.com/   Martin ...
虽然lucene4很早就出来,但是这里仍然以lucene3.0为基础,理解lucene索引创建的思路:   1. 要记录正向信息   field的数据,fdx,fdt,依次写每个field的即可   词向量,tvx,tvd,tvf   tvf是真正存储的地方,tvx是每个文档一项,具体包含第一个field的位置,其他field只要记录与覅一个field的偏移量即可   2. 记录反向信息 字典信息,tii,tis,通过字典,能够找到frq位置和prx位置   即,term1记录有此文档的倒排链表的位置,以及位置信息的链表   frq是倒排表,首先是倒排表,之后是跳 ...
1. 下载haproxy与安装 例如,我这里下载的是haproxy-1.3.15.10.tar.gz   解压后编译安装 tar xvf haproxy-1.3.15.10.tar.gz   cd haproxy-1.3.15.10   make TARGET=linux32 PREFIX=/usr/local/haproxy   make install PREFIX=/usr/local/haproxy   2. 编辑haproxy的配置文件,例如/usr/local/haproxy/etc/haproxy.cfg     ###########全局配置## ...
1. 定义和声明一定要一致   例如:   文件1:   int mango[100];   文件2:   extern int mango[];       2. 当数组已经定义好之后,那么后续的操作,可以使用数组,也可以使用指针的方式   例如:   char my_array[10]=”abcdefgh“,   可以使用数组的方式访问:   char c = myarray[i];   也可以使用指针的方式:  
1. 建索引时, 使用ngram的方式创建索引   SpellChecker的indexDictionary方法   private static void addGram(String text, Document doc, int ng1, int ng2) { int len = text.length(); for (int ng = ng1; ng <= ng2; ng++) { String key = "gram" + ng; String end = null; for (int ...
就是N-Gram version of edit distance   public float getDistance(String source, String target) { final int sl = source.length(); final int tl = target.length(); if (sl == 0 || tl == 0) { if (sl == tl) { return 1; } else { return 0; } ...
编辑距离概念描述:   编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一字转 ...
Jaro-Winkler Distance 算法   这是一种计算两个字符串之间相似度的方法,想必都听过Edit Distance,Jaro-inkler Distance 是Jaro Distance的一个扩展,而Jaro Distance(Jaro 1989;1995)据说是用来判定健康记录上两个名字是否相同,也有说是是用于人口普查,具体干什么就不管了,让我们先来看一下Jaro Distance的定义。   两个给定字符串S1和S2的Jaro Distance为:  
Global site tag (gtag.js) - Google Analytics