C#之代码优化
1、if和swith:
区别:1、if语句会执行多次判断,增加CPU的消耗,效率较低;switch只判断一次,效率较高
2、if表示的是一个范围,switch表示一个点
2、for和foreach
foreach:每变量一次就会生成一个额外的堆变量,每个变量占4个字节,用完后会销毁掉,GC会增大,因此尽量少用foreach
3、string和stringbuilder
string:会生成一个对象
stringbuilder:只产生一个对象,不会产生大量的 GC
4、内存:
栈:只要是new出来的引用类型和全局变量区,都在堆上;其他的都在栈上;Struct是值类型
堆:只要是new出来的引用类型,都在堆上;
全局变量区:static
代码区:
5、数组
1、线性顺序存储
int[] tmpArr:这种数组在硬盘上的存储是线性顺序存储,在硬盘上产生线性顺序连续的存储空间,读取速度快,赋值效率高
2、线性链式存储:增删效率高
1、list<int> tmpList:
2、ArrayList tmpArrList:能存储值类型,引用类型
效率较低:tmpArrList.Add(3):装箱操作
装箱:将值类型转换为引用类型
int tmpInt=4,object tmpObj =(object)tmpInt,int temptwo=(int)tmpObj
拆箱:从引用类型转换为值类型
3、Dictionary tmpDict:里面存的是键值对
1、是List<>的延伸 tempDict.Add(key,value)
2、可以用两个数组来代替,一个数组存key,一个数组存value,不过要确定长度
6、Oop(面向对象编程):
找对象----->面对对象编程(拆)----->框架的思想(标准化流程)------>工具开发
1.继承:
类:一个问题一个类
继承:子类实例化的时候,先调用父类的构造函数,然后才调用子类里的构造函数,就是分配了两块内存(父类的内存和子类的内存),
在析构的时候,先析构父类,再析构子类
多态:父类的指针指向子类,而调用子类的方法
Parent tmpParent = new Son();tmpParent.Update();调用的是子类里面的Update的方法
内存的角度分析:父类中是virtual void Update 子类里是override void Update
虚函数表:
只要是带virtual的这种类,系统就会自动分配一个虚函数表的结构(Key(函数Update)和Value(函数Update的地址)的格式)
子类调用方法的时候,指针将父类的方法覆盖了
7、ref
表示参数的地址和传进的变量地址一致
C#之代码优化的更多相关文章
- PHP代码优化
1 代码优化 1 尽量静态化 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和 ...
- 跟Unity3D学代码优化
今天我们来聊聊如何跟Unity学代码优化,准确地说,是通过学习Unity的IL2CPP技术的优化策略,应用到我们的日常逻辑开发中. 做过Unity开发的同学想必对IL2CPP都很清楚,简单地说,IL2 ...
- 记录一次bug解决过程:else未补全导致数据泄露和代码优化
一.总结 快捷键ctrl + alt + 四个方向键 --> 倒置屏幕 未补全else逻辑,倒置查询数据泄露 空指针是最容易犯的错误,数据的空指针,可以普遍采用三目运算符来解决 SVN冲突解决关 ...
- 【Java】记录一次代码优化
前不久的项目时间紧张,为了尽快完成原型开发,写了一段效率相当低的代码. 最近几天闲下来,主动把之前的代码优化了一下:) 标签:Java.Mybatis.MySQL 概况:本地系统从另外一个系统得到 ...
- Java代码优化(长期更新)
前言 2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,我的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸 ...
- 微信扫描打开APP下载链接提示代码优化
上一次我发了一篇文章叫“微信打开网址添加在浏览器中打开提示”,里面我发出来了三个代码,分别是纯JS.js+html.jQuery+HTML代码.今天来一个简化版带可以关闭的按钮操作.使用的是纯JS+H ...
- 微信扫描打开APP下载链接提示代码优化(转)
上一次我发了一篇文章叫“微信打开网址添加在浏览器中打开提示”,里面我发出来了三个代码,分别是纯JS.js+html.jQuery+HTML代码.今天来一个简化版带可以关闭的按钮操作.使用的是纯JS+H ...
- [转]SqlSever2005 一千万条以上记录分页数据库优化经验总结【索引优化 + 代码优化】一周搞定
对普通开发人员来说经常能接触到上千万条数据优化的机会也不是很多,这里还是要感 谢公司提供了这样的一个环境,而且公司让我来做优化工作.当数据库中的记录不超过10万条时,很难分辨出开发人员的水平有多高,当 ...
- GitHub 上一份很受欢迎的前端代码优化指南
http://segmentfault.com/a/1190000002587334?utm_source=weekly&utm_medium=email&utm_campaign=e ...
- Compiler Theory(编译原理)、词法/语法/AST/中间代码优化在Webshell检测上的应用
catalog . 引论 . 构建一个编译器的相关科学 . 程序设计语言基础 . 一个简单的语法制导翻译器 . 简单表达式的翻译器(源代码示例) . 词法分析 . 生成中间代码 . 词法分析器的实现 ...
随机推荐
- LeetCode 4. Median of Two Sorted Arrays & 归并排序
Median of Two Sorted Arrays 搜索时间复杂度的时候,看到归并排序比较适合这个题目.中位数直接取即可,所以重点是排序. 再来看看治阶段,我们需要将两个已经有序的子序列合并成一个 ...
- Java课程作业之动手动脑(六)
1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. import java.io.IOException; import java.nio.file ...
- ROS 进阶学习笔记(13) - Combine Subscriber and Publisher in Python, ROS
Combine Subscriber and Publisher in Python, ROS This article will describe an example of Combining S ...
- 监控msyql 连接数 及 各用户连接数
#!/bin/bash while true do date +%Y%m%d-%H:%M:%S mysql -uroot -p'xxx' -e "select count(1) from i ...
- 5. Tomcat窗口标题修改
具体修改方法如下: 进入tomcat的bin目录,打开catalina.bat .找到下面的内容: if not "%OS%" == "Windows_NT" ...
- 2018年1月21日--2月4日 NAS
二十号去比赛时,与同事闲聊时说起家庭服务器,后来搜到nas(网络附着存储器),找到freenas,突然觉得很有用,手机拍了大量的照片视频,存储在电脑,已经换过几次硬盘了,对于这些珍贵的资料,万一硬盘坏 ...
- iframe之父子页面通信
iframe之父子页面通信 1.获取 子页面 的 window 对象 在父页面中,存在如下两个对象 window.frames document.iframeElement.contentWindo ...
- oracle基础 管理索引
转自:https://blog.csdn.net/without_bont/article/details/79862112 管理索引 --- 原理介绍 索引是用于加速数据存取的数据对象.合 ...
- Navicat for MySQL 安装和破解(完美)
Navicat for MySQL 安装软件和破解补丁: 链接:https://pan.baidu.com/s/1oKcErok_Ijm0CY9UjNMrnA 密码:4xb1 navicat fo ...
- 机器学习入门-数值特征-对数据进行log变化
对于一些标签和特征来说,分布不一定符合正态分布,而在实际的运算过程中则需要数据能够符合正态分布 因此我们需要对特征进行log变化,使得数据在一定程度上可以符合正态分布 进行log变化,就是对数据使用n ...