tag 标签: 优化

相关博文
  • 热度 2
    2016-5-12 14:57
    334 次阅读|
    0 个评论
    Alter聊IT     小米 手机   在米粉的一片欢呼声中,小米2016夏季发布会落下帷幕。作为里程碑的MIUI 8、不走寻常路的小米Max以及提前剧透的小米手环,吸引眼球的同时,小米的产品线和竞争力也再度更新。   无疑,MIUI 8是整个发布会的重头戏,对小米的意义甚至高于新出的小米Max,以至于雷军先后用“系统”和“里程碑式的产品”来形容MIUI 8,洪峰更是花了近一个小时的时间来讲述MIUI 8的新功能和诸多创新。一直流传的一个说法是,MIUI才是小米竞争力的核心,MIUI 8的出现似乎进一步印证了这一说法。   在发布会之初,雷军自豪的透露了两组数字,一个是MIUI全球联网激活用户突破2亿;另一个是MIUI平台上日活跃量过千万的应用已达21个。在如此标榜新系统的情况下,又透露了小米的哪些初衷,在笔者看来可以归为以下几点:    其一,回归用户体验。   从洪峰的介绍来看,MIUI 8有几十项重大功能改进,近千项细节体验优化,而着重突出的功能无非三点:一是提升MIUI的视觉效果,不管是在色彩上的优化还是小米兰亭字体的推出,都是为了优化用户的视觉体验;二是丰富产品功能,一直以来MIUI都以“大而全”著称,MIUI 8似乎遵循了这一设计理念,从简单的扫一扫到计算器功能的丰富再到长截图、多窗口管理等技术的优化,莫不是如此;三是主打省电和安全,按照洪峰的话来说,安卓系统卡顿和续航不佳的根源在于应用的链式启动,MIUI 8通过严控“葫芦娃”和省电模式既解决了系统的流畅性也提升了产品的续航能力。此前备受争议的MIUI广告门事件让小米一度陷入非议,MIUI 8在功能上的改进无疑代表了小米回归用户体验的初心。    其二,扭转产品形象。   从2015年下半年开始,小米已经在着力扭转产品形象,黎万强的回归和小米5的黑科技可见一斑,而MIUI 8的出现可以说是接力小米5的又一重磅产品。不过,想要扭转产品形象绝非提升市场营销能力那么简单,最终仍要体现在产品上,MIUI 8在细节和色彩上的优化升级着实给人焕然一新的感觉。回顾小米的发展历史,MIUI可以说是整个小米系产品的支撑,MIUI 8或将成为小米的一个新起点。此外,MIUI 8再次打出了“黑科技”的营销口号,而手机和应用分身这一创新功能似乎落实了MIUI“系统”的定位。    其三,提高产品竞争力。   IDC在不久前公布了2016年第一季度智能手机出货量的数据,小米无缘市场前五,甚至被vivo、OPPO反超。或许这一结局和雷军在2016年年会上“回归初心、去KPI”话的号召不无关系,却也反映了小米竞争力的削弱,不管是在产品上还是品牌上,尤其在小米5产能爬坡的情况下。诚然,在屏幕、芯片、电池等核心技术不占优的情况下,手机厂商想要在硬件层面拉开差距并不容易,相比之下软件上的创新不乏为一条捷径。由此便不难理解小米通过MIUI 8提升产品竞争力的本意,可以断定,随着MIUI 8对小米全系列机型的覆盖,小米在销量上大有反超竞争对手的可能。    其四,调整自身定位。   自第一代小米手机至今已有5年的历史,小米的产品线越来越丰富,同时米粉对产品的需求也在逐渐改变。从MIUI 8身上不难发现,小米一方面通过功能的丰富性来满足年轻用户对产品的追求,另一方面也在打磨在办公等方面的优势。举个例子来说,远程协助、文字选择与编辑、精准长截屏、多窗口管理以及应用分身无不在迎合移动办公的痛点。同时,凭借“扫题目”等黑科技也有利于小米夯实在学生市场的地位。   那么,小米Max和MIUI 8同台亮相的寓意已经十分明显,前者主打大屏的视觉震撼,后者则弥补了大屏手机在续航和交互上的短板,小米Max+MIUI 8更像是为了收割对大屏有着更大需求的手机用户。   布局6英寸以上屏幕的手机厂商绝不止小米一家,乐视、华为等早已是先入者,其中华为凭借6英寸及以上大屏机收获不少商务人士拥趸。诚然,相比于传统的大屏手机市场,6英寸以上的产品有着特定的受众群体,也有着更少的竞争对手。小米的聪明之处在于,采用了双管齐下的策略来围攻大屏手机市场。一是在定价上,相比于当前市场上6英寸以上产品3000元左右的售价,小米Max1499元到1999元的定价在价格上有着不小的优势;二是大屏手机的短板在于交互体验的糟糕,这也是很多手机厂商止步于此原因所在,如果小米能够依靠MIUI 8解决这一问题,将利于打开大屏市场。   与之同时,市场对大屏手机的需求也在悄然上升。从移动信息化研究中心发布的《2016移动办公全景报告》显示,从2010年起,移动办公的市场规模在6年间翻了8倍,直接拉动了对大屏手机和平板电脑的需求。而CNNIC不久前公布的第37次中国互联网统计报告显示,手机视频和手机游戏的使用率分别达到了65.4%和45.1%,大屏手机的吸引力正在与日俱增。当然,从另一个角度来看,凭借手机厂商们出色的营销能力,大屏手机进一步掠夺平板电脑的市场份额也并非不可能。   一个积极的信号是,从小米Max的发布会上可以看出,小米已经在淡化对系统配置等硬件上的宣传,反倒是突出续航、交互、握持感等大屏手机一直以来的痛点。小米Max+MIUI 8真能如愿收割大屏用户吗?我们拭目以待。
  • 热度 1
    2015-3-6 10:59
    859 次阅读|
    0 个评论
    科技创新供应链大讲堂 -- 《供应链计划体系优化与产销协调研讨沙龙》-- 邀  请  函   关于沙龙: 沙龙背景 :         在经济新常态下,很多企业遭遇到产品品种多、市场需求下滑、销售预测误差大、库存高企、交付困难、缺货上升的窘境。在这种困境下,供应与销售陷入无休止争吵与博弈,但是却对破解困境无能为力。         其实供应链的种种乱象,归根结底还是跟计划体系有关。在复杂多变的市场环境下,对供应链的各块运作进行良好的计划管控非常重要。苹果公司现任CEO提姆•库克指出:“供应链计划是供应链中的方向、准则、舵手”。因此,我们可以说供应链计划作为供应链管理的全局控制和指挥中心,起到了“四两拨千斤”的作用。         3月15日(周日)下午,我们特地从帝都邀请到一位资深供应链专家,大家一起坐下来深入探讨供应链计划体系优化与产销协调。地点就在南山数字文化产业基地,欢迎感兴趣的朋友一起参与。 热门话题 :供应链计划体系优化 产销协调库存 预测 【建议参加单位】 生产制造企业、供应商、分销商等; 提供EMS/OEM/ODM 等服务的大中型代工企业; 物流公司、供应链公司、保理公司、银行等服务机构。 【建议参加人员】 负责计划、订单履行、采购、物流、销售、生产、供应链运营等岗位的各级管理人员和专家; 其他对活动主题感兴趣的朋友。 讲座主题和大纲: 供应链计划体系优化与产销协调        1)正确认识供应链管理及其核心规律;        2)供应链管理的库存成本观;        3)供应链优化的六种方法及特点;         4)产销协调计划是供应链指挥中枢;         5)一个全景案例:半年降低十亿元库存,缺货大幅度减少;         6)如何破解销售预测误差大的难题;          7)精益产销协调计划模式;          8)企业产销协调计划基本诊断;         9)互动讨论: 活动议程:   13:30-14:00 签到、来宾交换名片   14:00-14:30 分组自我介绍   14:30-16:30 供应链计划体系优化与产销协调 邓为民博士 16:30-16:40 茶     歇   16:40-17:10 圆桌互动讨论   17:10-17:20 抽奖合影留念   备注: 1:所有参会人员请携带足够名片,现场凭名片与沙龙确认函(或确认短信)签到进场。 2:会议期间请遵守参会规定,手机静音或者振动,不可窃窃私语。 活动安排: 主办单位: 深圳市南山区科技创新局 深圳工业总会供应链委员会 承办单位 :深圳市中兴供应链有限公司 深圳市南山区科技创业服务中心 前海供应链研究院 协办单位: 国际电子商情 媒体支持: 深圳工业网  《深圳工业经济》  创业南山创业之星 时  间: 2015年3月15日(星期日)下午2:00-5:20 地  点:  深圳市南山区数字文化产业基地(南山区科技创业服务中心) 规  模: 40人(公开报名,报名人员需经组委会审核) 演讲嘉宾简介: 邓为民博士 ,供应链管理实战专家,畅销书《掘金供应链_从以产定销到以销定产》作者,长期从事供应链管理与变革推动,对中国本土企业的供应链优化有自己独到见解。曾帮助国内某大型工程设备企业一个项目降低库存十亿元,缺货大幅度减少,且企业对市场响应速度从按月转变到按天,半年即实现;帮助某工程设备企业进行配件供应链优化,十亿元规模的业务年优化效益达三千万,且客户订单响应周期缩短一半、人员时间减少20%,库存减少三分之一,实现对业务全面优化,一年实现;帮助某电力设备企业优化计划体系,年综合优化效益可超亿元,公司净利润可数倍增加;帮助某大型快速消费品企业挖掘五千万供应链优化空间;帮助某男装进行产销协同计划优化,缩短计划编制周期1个月,缩短订单响应时间15天;协助某女装推进快速反应供应链。 参会报名: 本活动以公益性专业交流为目的,与会人员AA制,每人50元。费用用于嘉宾礼品、茶歇等。 报名途径: 编辑短信( 供应链计划沙龙 + 姓名 + 公司 + 职务 + 手机 + 邮箱 )发送至18617071319,夏先生(收),也可以微信链接直接报名; 缴费可选择银行转账、微信支付等方式,银行账号见下,微信支付请加微信号xiaguanghao0414; 收到付款后,组委会将发送正式的确认函,会议当天凭确认函(或确认短信)和名片签到。 为了保证出勤率,报名人员需提前付款。如果无法参加,已缴费用可转为下次使用。 本活动对如下范围朋友免费: 供应链委员会的志愿者; 南山科技创业服务中心的合作机构、深圳工业总会的会员企业; 本次活动报名截止日期:2015年3月14日18:00前 银行帐号: 户  名:深圳工业总会供应链集成发展专业委员会 开户行:中国建设银行深圳市蛇口支行 帐  号:4420 1502 8000 5255 4726 欢迎感兴趣的企业或个人提供抽奖物品赞助并宣传自己,物品范围不限,得体即可。有意者请联系王福寿18676683256。 志愿者招募 从事供应链的您,有兴趣参与专业交流平台的建设吗?欢迎加入我们的志愿者队伍。只需投入一小部分业余时间,您将有机会近距离业界大牛,获得丰富的人脉关系,提升自己的专业能力。 供应链委员会志愿者团队分为现场活动组、招生宣传组、商业机会组。您可以根据个人兴趣和专长加入。有意者请加微信coldsword2011联系王福寿博士沟通交流,添加好友注明“供应链委员会志愿者申请”。
  • 热度 3
    2014-11-8 11:36
    447 次阅读|
    0 个评论
    群里突然有人发问优化代码段: module youhua(input a, input b, input c, input d, input sel, output /*reg*/ sum); always @(a,b,c,d,sel) if(sel) sum = a+b; else sum = c+d;   很早之前就看到了类似的题目,好像也是面试题,所以我很快就想到了减少加法器。 但是群里有人说用assign sum = sel? (a+b):(c+d);代替上面的always块, 我觉得很奇怪,这样跟上面的完全没有什么两样,起不到任何优化的效果 我想到的是用多路选择器选择a,b,c,d然后接入加法器: reg a_r,b_r; always @(a,b,c,d,sel) if(sel) begin a_r = a; b_r = b; end else begin a_r = c; b_r = d; end assign sum = a_r + b_r; RTL如下
  • 热度 1
    2014-7-3 13:49
    358 次阅读|
    0 个评论
      根据c/c++语法,const可以出现的地方,volatile几乎也都可以出现。但是,const修饰的对象其值不能改变,而volatile修饰的对象其值可以随意地改变,也就是说,volatile对象值可能会改变,即使没有任何代码去改变它。在这一点上,最典型的例子就是内存映射的设备寄存器和多线程中的共享对象。懂得使用volatile也是一门小小的艺术。使用volatile约束符可以阻止编译器对代码过分优化防止出现一些你意想不到的情况,达不到预期的结果;过频地使用volatile很可能会增加代码尺寸和降低性能。下面举个例子来说明volatile在优化中的微妙作用。 1.阻止编译器优化 ARM Evaluator-7T模拟单机板使用基于内存映射的设备寄存器叫特殊寄存器,用来 控制和交互外围设备。CPU对内存的操作可以做到按位进行,而特殊寄存器是4字节对齐并占四个字节。你可以象unsigned int变量一样操作特殊寄存器(有些人可能更喜欢uint32_t,认为这样体现寄存器占用4个字节的特点。uint32_t在C99 头文件中有定义)。而这里,为了体现寄存器本身作为寄存器的含义而非它的物理意义的,我们做如下定义: typedef uint32_t special_register; Evaluator-7T板子上有一个按钮(可以认为是外设之一)。按下该按钮可以对IOPDATA寄存器第8位置1,相反,释放按钮会将该位重新清0。我们使用枚举方法为IOPDATA寄存器的第8位置定义一个掩码mask: enum { button = 0x100 }; IOPDATA寄存器对应的地址为0x3FF5008,我们可以用宏形象地定义IOPDATA: #define IOPDATA (*(special_register *)0x03FF5008) 有了这个定义,我们执行下面的循环就可以使CPU一直等待该按钮被按下: while ((IOPDATA button) == 0) ; 然而这个期望必须建立在编译器不对代码进行优化的前提假设之上。如果编译器优化这段代码,那么它会认为在这个循环中没有什么会改变 IOPDATA而且认为条件判断结果总是真或假,最终优化的结果是只对(IOPDATA button)==0判断一次,之后的循环都不在对其进行判断,其等同于: if ((IOPDATA button) == 0) for (;;) ; 显然,如果条件判断结果为真(那么之后都会认为是真),那么这段代码将会陷入死循环。如果判断为假,那么循环就此结束。可以看出,优化的代码效率更高,因为每次循环相比原来的执行时间要短。不幸的是,这段优化代码使得它根本就不能响应按钮的每次动作。那么,如何解决这个问题呢?解决的关键就是不要让编译器优化这段代码,使用volatile就可以办到这一点。我们修改前面关于IOPDATA的宏定义: #define IOPDATA (*(special_register volatile *)0x03FF5008) 这个定义将IOPDATA 定义为volatile类型的寄存器。volatile隐含地告诉编译器特殊寄存器可能会改变内容,即使没有任何显式地代码去改变它的内容。这样一来,编译器就不对IOPDATA作优化,而是每次都去访问IOPDATA,这其实正是我们所期望的。 2.无意中降低了效率 有时候,如果不注意的话,使用volatile会无意中降低代码效率。举个例子。Evaluator-7T有一个七段数码显示器见下图: 在IOPDATA 寄存器中第10到16位用来控制显示器的每一段。比如第10位就是用来控制顶部的那段显示,置1则点亮它,清0则熄灭它。我们可以定义一个掩码mask来覆盖从第10到16的所有位: enum { display = 0x1FC00 }; 假设变量b用来控制这7段显示器的每一段显示,并且b的值已经你想要设置值(准备用来显示哪几段和熄灭哪几段,其它无关的位均为0)。那么你想要改变设置新的显示方式的操作就是: IOPDATA = b; 但是这种赋值可能会改变第10到16位之外的其它位,这是我们不期望的。所以,采用下面的方法更好: IOPDATA |= b 但是,使用 |= 并不能熄灭那些已经点亮的显示段(1 | 0 - 1),所以我们可以用下面的函数达到目的: void display_put(uint32_t b) { IOPDATA = ~display; IOPDATA |= b; } 不过,可能没想到的是这样的操作在无意中降低了代码效率。因为我们定义IOPDATA为 volatile类型,它阻止了编译器对代码的优化,要求任何读写IOPDATA的操作都死死板板地进行。IOPDATA = ~display的等价表现为IOPDATA = IOPDATA ~display,也就是先从IOPDATA读出内容然后与上~display,最后又回写IOPDATA。同理,IOPDATA |=b也有相似的过程。整个过程分别有2次读IOPDATA和2次写IOPDATA的操作。如果IOPDATA不使用volatile,那么编译器会要求将IOPDATA ~display的结果放在CPU寄存器中,直到完成IOPDATA |= b操作才写回特殊寄存器IOPDATA。显然后者较之前者分别省掉了1次读IOPDATA和1次I写OPDATA的耗时操作(外设操作是最耗时的),效率要高很多。如果你想使用volatile但又能使能优化功能,你可以将函数作如下的修改: void display_put(uint32_t b) { register uint32_t temp = IOPDATA; temp = ~display; temp |= b; IOPDATA = temp; } 这样做有点烦琐,下面的等效方法更简单: void display_put(uint32_t b) { IOPDATA = (IOPDATA ~display) | b; } 结论:从该例子看出,它并不鼓励使用volatile,即使要用也要很小心,因为volatile可能在无意中降低了代码效率,而你却无法察觉。但是,我们说,不鼓励并不是说就不能或不要用,而是要懂得何时用,怎么用好它。其所谓智用了。
  • 热度 3
    2012-6-12 19:44
    1113 次阅读|
    0 个评论
      摘自 wp311 Improving Performance in Spartan-6 FPGA Designs v1.2 RTL: ·         使用同步复位。 利于把寄存器综合入 DSP 和 BRAM。 综合: ·         检查综合报告,确保逻辑层次(logic level)较少。 利于提高 PAR 性能。 ·         使用约束。 利于优化。 ·         寄存器平衡(register balancing (retiming))。 进一步优化。 ·         FSM 优化(state machine optimizations)。 进一步优化。 ·         禁止“LUT-combining(会将一对 LUT 打包到 SPARTAN6 slice 的双输出 LUT)”。 Synplify pro 设置:     XST 设置:     ·         若关键路径横跨多个模块,要打平网表(flatten netlist)。 利于优化在模块间进行。 实现: ·         首先不更改任何选项: 若设计结果接近预期,则: a.       禁止 MAP的“LUT-combining”。 防止区域优化。 b.       设置高级网表优化。 便于重新综合并优化扇出系数。 ·         使用 smartXplorer 进行不同选项结果的生成。 可以并行实现。 ·         使LUT 使用率低于80%。 利于 PAR,防止性能退化。 性能分析和改进措施: ·         若逻辑层次太多,返回 RTL 代码设计,用流水线或重新定义时序(retiming,即降低时钟频率或更改寄存器结构等) ·         若关键路径有长延迟: a.       用 PlanAhead 查看,确保没有在 GTP 或 PCI-E 终点周围 进行PAR。如下图所示:     b.       若长延迟的线网有高扇出,复制该线网。也可以用 floorplan 来控制 placement。 c.       若长延迟中有IO,使用IO 寄存器。若 IO 寄存器已使用,确保放在 IO 附近。为确保访问性能,关键IO不要放在专用 IP 附近。 d.       若长延迟中有 DSP48 或 BRAM,要使用流水线。若流水线也不能保证性能,用 floorplan 或 LOC 约束确保这些块优化放置。 其他: ·         使用针对 SPARTAN6 的 IP。 使用3系速度的器件,会比2系的高出30%。
相关资源
广告