• WC2017 Day4


    WC2017 Day4

    计算机架构和程序底层优化

    • 卡常!卡常!
    • 好像就是洛可强论文内容

    0x00 信息的表示和处理

    • 二进制

    整数的表示

    • 位向量
    • 16进制

    字长?

    • NOI Linux:32位
    • 这导致NOI Linux系统处理64位整数很慢
    • 大多数操作系统:64位

    字节顺序?

    • 小端法
    • 大端法
    • 绝大多数个人计算机使用小端法

    有符号数

    • 取反加一

    四则运算

    • 除法向零取整(c++)

    位运算与逻辑运算

    • 逻辑运算是短路的,1||i++并不会使i+1
    • 负数的移位运算并不好使,可能和你想象的不一样
    • 移位超过字长是未定义的,可能会出错

    浮点数

    • 没什么好讲的

    编程技巧

    • 整数当作位向量使用
    • 求1的个数?
    • 查表
    • 求后缀0的个数?
    • 二分法
    • 查表法
    • LOWBIT?
    • x & -x
    • bitset!
    • 用整数表示集合
    • 优化状压DP

    0x01 程序的底层表示

    机器指令

    • 汇编语言 第三版

    • 好书

    • 加减乘很快

    • 除法很慢

    • 跳转很不稳定

    除法优化

    • 少取模
    • 除以常数的优化
    • 《论程序底层优化的一些方法和技巧》 洛可强 2009

    0x02 CPU基础知识

    数字逻辑电路

    组合逻辑电路

    CPU的实现

    • 线性
    • 流水线,会出问题
    • 解决方案:加Bubble,转发(Forwarding),分支预测
    • 现代CPU:超标量(多核),乱序执行

    编程技巧

    • 用三元运算符(a>b?a:b)取代条件跳转,消除分支预测错误
    • 四路归并

    0x03 层次存储方式

    • 磁盘(HDD)
    • 随机访问储存器(RAM)
    • 固态硬盘(SSD)
    • 寄存器 (Register)

    局部性

    • 时间局部性
    • 空间局部性

    编写高速缓存友好的代码

    • 优化局部性
    • 避免使用步长为$ 2^n $的访问方式

    线性代数

    矩阵的转置

    • 沿对角线翻折

    行列式

    • 消元后主对角线乘积,或者递归求解

    • |A||B|=|AB|

    • 交换两行,行列式取反

    • 把一行乘以c加到另一行上,行列式不变

    • 下面都是什么玩意

    数据压缩算法和通信问题

    0x01 一些通信题

    0x02 数据压缩算法

    无损压缩

    • 主要用于文本压缩
    • 基于文本结构的压缩
    • 基于信息熵的算法

    有损压缩

    • 主要用于图片压缩

    信息熵

    • $ H=sum -p_{i}log{p_{i}} $
    • pi为每种字符出现的频率
    • aaaaaab与ab
    • 英语与汉语

    压缩算法?

    • 游程编码
    • BWT
    • 哈弗曼编码
    • 算数编码
    • RAR
    • ZIP

    图片压缩算法?

    • DFT
    • DCT
    • SVD

    总结

    • 明天WC2017
    • gtmd
    • rp++
    许愿弥生改二
  • 相关阅读:
    Struts2 文件上传和下载
    Struts2的验证框架简单吗?
    Struts2防止重复提交
    Struts2的标签三大类是什么?
    Struts2的值栈和OGNL牛逼啊
    Struts2牛逼的拦截器,卧槽这才是最牛的核心!
    转载---C# 递归创建文件夹
    转载---C# 冻结 datagridview的列
    C# base64编码转成图片
    转载---C# 复制文件夹下的(内容)到指定文件夹中
  • 原文地址:https://www.cnblogs.com/LoveYayoi/p/6745472.html
Copyright © 2020-2023  润新知