硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践,与从外部获取数据或在运行时生成数据不同。
硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,尽管可以使用调试器或十六进制编辑器在内存或磁盘上进行更改。
硬编码的数据通常表示不变的信息,例如物理常量,版本号和静态文本元素。 另一方面,软编码数据对用户输入,HTTP服务器响应或配置文件等任意信息进行编码,并在运行时确定。
它和普通编码的区别是:
1、编码方式不同:
普通编码:使用CPU进行编码。
硬编码:使用非CPU进行编码,如显卡GPU、专用的DSP、FPGA、ASIC芯片等。
2、使用方式不同:
普通编码:实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点
硬编码:性能高,低码率下通常质量低于软编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)的,质量基本等同于软编码
3、复杂程度不同:
普通编码比硬编码要复杂一些,对以后的考虑要周到一些。普通编码是一种设计,而硬编码不过是一种具体的实现。软件开发不只是需要一个软件的实现,更需要软件能够很好的修改,方便得扩展,所以需要一些设计技巧在里面。
扩展资料:
在许多情况下,单个硬编码值(例如数组大小)可能会在程序的源代码中出现多次。这将是一个神奇的数字。如果值的某些外观被修改,这可能通常会导致程序错误,但不是全部。这样的错误很难找到,并且可能会长时间保留在程序中。
如果相同的硬编码值用于多于一个参数值,例如,可能会出现类似的问题。一个由6个元素组成的数组,最小输入字符串长度为6。
程序员可能会错误地更改值的所有实例(通常使用编辑器的搜索和替换工具),而无需检查代码以查看每个实例的使用方式。通过定义将名称与值相关联的常量并在代码中使用每个外观的常量名称,可以避免这两种情况。
理解:
按这个大佬的说法 硬编码的硬体现在什么体现在 固定 难以改变 具体 细节 集中
比如组件的思想:我们想改变某一个系统某一模块,如果是用组件的话 不需要 在到大程序里找半天找到找到那个模块然后修改它的功能,而且比较恶心的是因为整个程序耦合性高,其他与它相关的部分也要改,但如果是组件 只需要改组件的部分,然后修改一下接口就可以了。比较方便复用我感觉。
从另一方面来说 硬件和软件不也是那样吗 软件我们可以很方便的自由定义,硬件很难变。
很多概念都是相对的 甚至说一个变量是常量我们也可以说它很硬。
就是很具体 ,不好动态改变,但有一个好处,即效率,从某方面说 从学生名单找一个人和你知道那个人直接叫它,速度不一样。
这里的”硬”是不是有一种”在运行时很难或不能改变”的意思……
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178724.html原文链接:https://javaforall.net
