其实Impala是:Java前端与C++处理后端 这种形式的。我们知道:Java是不能够直接在操作系统层面上运行的,但是C++可以。这就导致了C++的性能比Java高那么一些。Impala如果是个追求性能的偏执狂的话,它自然不会放过一丁点的优化可能。
一、为什么Impala要使用C++语言,而不是Java
1.其实Impala是:Java前端与C++处理后端 这种形式的。
2.我们知道:Java是不能够直接在操作系统层面上运行的,但是C++可以。这就导致了C++的性能比Java高那么一些,Impala如果是个追求性能的偏执狂的话,它自然不会放过一丁点的优化可能(其实,如果它用Java实现,也不是不行,毕竟现在Java 8的出现,使得java与C++在性能上的差异进一步缩小。你看,Presto不就是用Java实现的吗,Presto与Impala比起来性能一点也不差!)。
3.会Java的人比会C++的人多很多,Impala既然付“失大众取小众”的代价,也要坚持性能至上的原则,想必他们对自己的产品还是很有自信的:就算我不亲民,但因为我的性能上的诱惑,你还是回来用我~
4.也许是对未来的预期。多少年来,对分布式系统来说,最大的瓶颈是IO(磁盘IO和网络IO),而不是CPU。似乎随着未来硬件技术的发展,IO将不再是分布式系统的主要瓶颈。这就使得CPU的计算能力将重新成为分布式系统的主要瓶颈,而两者中,C++是更会利用CPU的那一个,所以,在分布式领域,似乎未来在理论上是C++的天下······(这当然是一派人的观点。而我的观点不是这样的,我认为未来的发展趋势是机器要去迁就人,而不是人去迁就机器,要让人放下简单易用多生态的Java,不是那么容易的)
延伸阅读:
二、字符集(Character set)是什么
是多个字符(英文字符,汉字字符,或者其他国家语言字符)的集合,字符集种类较多,每个字符集包含的字符个数不同。
特点:
①字符编码方式是用一个或多个字节表示字符集中的一个字符
②每种字符集都有自己特有的编码方式,因此同一个字符,在不同字符集的编码方式下,会产生不同的二进制
常见字符集:
ASCII字符集:基于罗马字母表的一套字符集,它采用1个字节的低7位表示字符,高位始终为0。
LATIN1字符集:相对于ASCII字符集做了扩展,仍然使用一个字节表示字符,但启用了高位,扩展了字符集的表示范围。
GBK字符集:支持中文,字符有一字节编码和两字节编码方式。
UTF8字符集:Unicode字符集的一种,是计算机科学领域里的一项业界标准,支持了所有国家的文字字符,utf8采用1-4个字节表示字符。