vDSP加速的应用
vDSP 是IOS提供一系列加速处理算法。。在优化时可以考虑应用一二。。。
1、在项目中加入Accelerate.framework库
点开项目属性->Build Phases->Link Binary With Libraries->+ Accelerate.framework;
2、在应用的类头文件加上引用
#include <Accelerate/Accelerate.h>
3、查找对应函数应用
所有函数可以在该文档查找 vDSP Reference.
以下通过对图片的叠加算法进行测试....
//无vDSP叠加算法
void NormalEx( BYTE *InputPtr, BYTE *CompositePtr, floatrat,int width,int height)
{
for(int j=;j<height;j++)
{
for(int i=;i<width;i++)
{
InputPtr[BLUE] = ( - rat) * InputPtr[BLUE] + rat * CompositePtr[BLUE];
InputPtr[GREEN] = ( - rat) * InputPtr[GREEN] + rat * CompositePtr[GREEN];
InputPtr[RED] = ( - rat) * InputPtr[RED] + rat * CompositePtr[RED];
InputPtr+=;
CompositePtr+=;
}
}
//应用vDSP叠加算法
void NormalEx( BYTE *InputPtr, BYTE *CompositePtr, float rat,int width,int height)
{
int count=width*height;
// alloc space for our dsp arrays
float * srcAsFloat = (float*)malloc(count*sizeof(float));
float * comAsFloat = (float*)malloc(count*sizeof(float));
float inrat= - rat; for (int i=; i<; i++) {
//转成float数组
vDSP_vfltu8(InputPtr+i,,srcAsFloat,,count);
vDSP_vfltu8(CompositePtr+i,,comAsFloat,,count);
//乘法
vDSP_vsmul(srcAsFloat, , &inrat, srcAsFloat, , count);
vDSP_vsmul(comAsFloat, , &rat, comAsFloat, , count);
//相加
vDSP_vadd(srcAsFloat, , comAsFloat, , srcAsFloat, , count); // 转回byte
vDSP_vfixu8(srcAsFloat, , InputPtr+i, ,count);
} free(srcAsFloat);
free(comAsFloat);
}
4、总结
vDSP在实际应用需要转化成float或者double型处理....对于简单的算法而已会更加耗时(如:灰度算法)
实际应用在需要批量重复简单操作的算法中会有显著提速效果............
vDSP加速的应用的更多相关文章
- 百度MIP移动页面加速——不只是CDN
MIP是用CDN做加速的么?准确答案是:是,但不只是. MIP全称Mobile Instant Pages,移动网页加速器,是百度提出的页面加速解决方案.MIP从前端渲染和页面网络传输两方面进行优化, ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- 阿里云系列——6.给你的域名使用CDN加速(详细步骤+简单配置)
网站部署之~阿里云系列汇总 http://www.cnblogs.com/dunitian/p/4958462.html 进入管理页面:https://home.console.aliyun.com/ ...
- Signalr系列之虚拟目录详解与应用中的CDN加速实战
目录 对SignalR不了解的人可以直接移步下面的目录 SignalR系列目录 前言 前段时间一直有人问我 在用SignalR 2.0开发客服系统[系列1:实现群发通讯]这篇文章中的"/Si ...
- docker学习(2) mac中docker-machine使用vmware fusion以及配置国内镜像加速
一.前言 先回顾下上一节创建docker-machine的过程,默认情况下docker toolbox中的docker-machine使用virtual box创建虚拟机,KI首次启动时创建虚拟机的过 ...
- [转]加速Android Studio/Gradle构建
加速Android Studio/Gradle构建 android android studio gradle 已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多, ...
- 利用免费cdn加速webpack单页应用
回顾现状 在之前的学习过程中,react单页应用经过webpack打包之后会输出大概如下的目录结构,它就是站点的所有前端组成了: 1 2 3 4 5 6 MacBook-Pro:output ba ...
- ffmpeg实现dxva2硬件加速
这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.这是第二篇,记录用ffmpeg实现dxva2. 第一篇翻译的Direct3D device manager,链接:http: ...
- 用CSS开启硬件加速来提高网站性能
国外一篇文章,有点意思,转载过来,准备尝试下~ 中文地址:http://www.cnblogs.com/rubylouvre/p/3471490.html 原文地址:http://blog.teamt ...
随机推荐
- 转:【Java并发编程】之十九:并发新特性—Executor框架与线程池(含代码)
Executor框架简介 在Java5之后,并发编程引入了一堆新的启动.调度和管理线程的API.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.coc ...
- NullpointerException处理
毫无疑问,空指针NullpointerException是我们最常遇到异常,没有之一! 在刚进入编程职业时,我想,大部分刚进入的同学肯定会受到前辈们的叮咛:一定要防止空指针,这是个低级错误.你们不是? ...
- MongoDB学习之路(五)
MongoDB $type 操作符 类型 数字 备注 Double 1 String 2 Object 3 Array 4 Binary data 5 Undefined 6 已废弃 Object i ...
- 集美大学网络1413第十四次作业成绩(团队九) -- 测试与发布&博客展示(Beta版本)
题目 团队作业9--测试与发布(Beta版本) 团队作业9成绩 团队/分值 Beta版本测试报告 Beta版本发布说明 总分 Bug类别. 数量 场景测试 测试结果 测试矩阵 出口条件 ...
- 个人作业(2)---英语学习APP案例分析
第一部分 调研, 评测 1.下载并使用,描述最简单直观的个人第一次上手体验. PC上的必应词典主页面与其他英语学习APP类似,一些英文读物的推送,但是每日阅读需要去浏览器去看有点不太方便,我觉得直接在 ...
- 学号:201521123116 《java程序设计》第六周学习总结
1. 本章学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2.书面作业 1.1.Object对象中的clone方法是 ...
- 201521123001《Java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- 201521123031 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 1.将Student对象(属性:int id, String name,int age,dou ...
- Spring02-AOP
1,动态代理,指的是通过一个代理对象创建需要的业务对象,然后在这个代理对象中统一进行各种操作. 步骤: 1)写一个类实现InvocationHandler接口: 2)创建要代理的对象 2,创建一个简单 ...
- Windows的文件权限 研究笔记
最近公司的一台设备中了病毒,杀了又出现,总是破坏机器上面运行的程序. 想着研究下文件权限,把文件设为只读,让病毒破坏不了即可. 于是开始了实验1: 首先建立一个txt文件,查看权限: 可以看到User ...