美团在生产环境中实践了Spark向量化计算,利用Gluten和Velox实现了性能和资源利用的优化。以下是对这一实践的概括:
向量化计算原理
SISD vs SIMD:传统的单指令单数据(SISD)架构每次处理一个数据点,而单指令多数据(SIMD)架构允许CPU使用更宽的寄存器同时处理多个数据点,显著提高了计算密度和效率。
SIMD指令集:Intel自1996年的MMX指令集开始,陆续推出了SSE、AVX、AVX512等指令集扩展,以增强CPU的向量化计算能力。
执行引擎的局限
缓存命中率:按行处理数据会导致不必要的内存加载,降低缓存效率。
变长字段:如字符串字段,会影响数据定位和处理效率。
虚函数调用:封装在循环中的虚函数调用会带来额外的性能开销。
向量化计算的优势
数据组织:按列组织数据(Block By Block)改善了数据局部性,减少了内存访问延迟。
减少函数调用:批量处理同一列数据减少了函数调用次数和虚函数的开销。
自动向量化:允许编译器生成更高效的代码,减少分支预测失败。
Spark向量化计算实践
性能提升:测试显示,向量化版本的函数耗时降为非向量化版本的三分之一。 ...
各种语言输出: hello worldC1234567#include <stdio.h>int main(){ printf("Hello World!"); return 0;}
C++12345678#include <iostream>using namespace std;int main(){ cout << "Hello World!" << endl; return 0;}
C#123456789using System;class HelloWorld{ static void Main(string[] args) { Console.WriteLine("Hello World!"); }}
Java12345public class HelloWorld { public static void ma ...
宫保鸡丁做法主料
鸡腿肉/鸡胸肉:200g(推荐鸡腿肉,肉质更嫩滑)
辅料
油炸花生米:50g(需提前炸至酥脆)
大葱:1 根(葱白切 1.5cm 段,葱绿可制葱姜水)
干辣椒:6-8 个(去籽剪段,增香提辣)
花椒:1 小把(约 5g,焙香后使用)
姜蒜:各 10g(姜切末,蒜切片)
调料
腌肉料:盐 3g、料酒 15ml、淀粉 15g、蛋清 1 个(锁住肉汁)
调味汁:生抽 15ml、陈醋 10ml、白糖 8g、淀粉 5g、清水 50ml(经典荔枝口比例)
步骤1. 预处理食材
鸡肉去骨切 1.5cm 丁,清水浸泡 10 分钟去腥,挤干水分;
加盐、料酒、蛋清、淀粉顺时针搅拌至粘手,冷藏腌制 1 小时。
2. 炸制花生米
冷油下花生米,中小火炸至微黄捞出,放凉后去皮。
3. 滑炒鸡丁
热锅冷油烧至六成热(180℃),下鸡丁快速滑散至表面发白。
4. 炒香辅料
留底油焙香花椒、干辣椒,加葱姜蒜爆香;
可选加豆瓣酱 5g 炒出红油(川味升级)。
5. 混合调味
倒入鸡丁和调味汁,大火翻炒至酱汁浓稠;
临出锅前加花生米快速翻匀(保持酥脆)。
小贴士
嫩肉关键 ...
红烧茄子菜谱主料
茄子:2 根(约 500g,建议选紫皮长茄,肉质更嫩)
辅料
蒜末:10g(关键提香)
葱花:5g
姜末:3g(可选)
青红椒:各半个(配色)
淀粉:30g(裹茄用)
食用油:适量(炸制用)
调味料
生抽:2 勺(约 15ml)
老抽:1 勺(约 8ml,调色用)
陈醋:1 勺(约 10ml)
白糖:1 勺(约 8g)
蚝油:1 勺(约 10g)
盐:3g(腌制用)
水淀粉:2 勺(勾芡用)
步骤1. 预处理茄子
茄子洗净切滚刀块,放入淡盐水中浸泡 10 分钟,挤干水分后裹薄淀粉(减少吸油)
2. 炸制
油温 6 成热(约 180℃)下茄子,中火炸至微黄捞出;
油温升至 7 成热复炸 30 秒,表皮酥脆后控油。
3. 炒制
留底油爆香葱姜蒜末,加青红椒翻炒;
倒入调味汁(生抽+老抽+陈醋+白糖+蚝油+50ml 清水;
加炸好的茄子快速翻炒,淋水淀粉收汁。
4. 出锅
撒剩余蒜末增香,点缀葱花即可。
小贴士
① 防氧化:切块后立即泡盐水,避免发黑
② 少油技巧:腌后挤干水分+裹淀粉
③ 调味关键:最后加蒜末激发香味,加醋分解茄碱
④ 进阶版:可加肉末或番茄 ...
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment