本仓库包含南方科技大学《CS219 高级程序设计》课程的五个项目,涵盖了从 C 语言图像处理基础到 C++ 面向对象封装、动态链接库构建、图像处理优化以及 Python/Rust/C++ 性能对比等内容。项目已完成并通过评审,得分如下:
| 项目编号 | 项目名称 | 简要描述 | 得分 |
|---|---|---|---|
| Project 1 | 设计一个计算器 | 计算机要求能处理较大范围的数据 | 74 |
| Project 2 | C语言与Java语言性能比较分析 | 使用一个关于矩阵点乘的计算来测量不同规格的数据对于结果的影响 | 73 |
| Project 3 | C语言图像处理库 | 构建支持 imread/imwrite/调亮/缩放 等功能的动态库 |
86 |
| Project 4 | C++语言的图像处理动态链接库 | 引入 OpenMP 与 SIMD 优化图像操作性能 | 91 |
| Project 5 | 多语言性能比较 | 使用 Python/C++/Rust 实现图像操作并进行性能分析 | 84 |
每个项目具体的内容与要求详细见每个项目中对应的文件:projectx.pdf,报告内容见 Report_of_projectx.pdf.
- 使用模拟人脑计算数据的方式按照字符串进行计算,从而实现大型数据的加减乘除
- 不足:应该设计一个数据结构存放数据然后更加方便的处理数据,而不是输入数据作为字符串直接处理
- 做的最糟糕的一个项目,分数特别低,没有思考java的JVM对程序可能的优化的影响,对此没有提及
- 而且数据的检测存在一定的问题,实际上对于超大量的输入,java的速度可能更快,这也是反常识的一部分
- 在这个项目中要注意反思总结,提升自己对不同编程语言的理解程度
-本项目使用纯 C 语言实现了一个命令行图像处理程序,支持对 24 位 BMP 图像文件进行基本处理操作,包括亮度调整、双线性插值、图像反转等等功能。用户可通过菜单界面选择操作,程序将读取输入图像并输出处理后的结果图像。是图像处理入门的实践项目。
- 加入 OpenMP 实现多线程,提升处理速度。
- 使用 SIMD 向量化加速亮度、融合等操作。
- 添加更多图像处理模块,提升模块化与性能表现。
- 参考opencv实现了多种新功能,可以说是一种mycv库
- 对同一图像处理任务,分别用 Python(OpenCV)、C++、Rust 实现。
- 分析内存分配、运行时间、缓存使用、编译优化。
- 展现不同语言在图像处理任务下的实际效率。
- 编程语言:C++, Python, Rust
- 构建工具:CMake, cargo
- 依赖库:OpenCV (Python), Rust image crate
- 优化方式:OpenMP 多线程、SIMD 向量化、内存对齐
- 测试工具:time, valgrind, memory_profiler
本项目由 吕梓翀 完成,作为南方科技大学 CS219 高级程序设计课程的课程项目提交。所有代码与报告均为本人独立完成,未经允许禁止转载或用于任何商业用途。如有学习或合作交流意向,欢迎联系。