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 . 引论 . 构建一个编译器的相关科学 . 程序设计语言基础 . 一个简单的语法制导翻译器 . 简单表达式的翻译器(源代码示例) . 词法分析 . 生成中间代码 . 词法分析器的实现 ...
随机推荐
- spring揭密学习笔记(2)-spring ioc容器:IOC的基本概念
1. IoC的理念就是,让别人为你服务!2. 其实IoC就这么简单!原来是需要什么东西自己去拿,现在是需要什么东西就让别人送过来.一个生动的示例 3.三种依赖注入的方式 IoC模式最权威的总结和解释, ...
- leetcode1004
class Solution: def getMax(self,B:'List[int]'): n = len(B) maxlen = 0 curlen = 0 for i in range (n): ...
- 为什么我希望用C而不是C++来实现ZeroMQ
原文在这里 开始前我要先做个澄清:这篇文章同Linus Torvalds这种死忠C程序员吐槽C++的观点是不同的.在我的整个职业生涯里我都在使用C++,而且现在C++依然是我做大多数项目时的首选编程语 ...
- 爬虫--requests模块高级(代理和cookie操作)
代理和cookie操作 一.基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests ...
- 16_虚拟dom和dom diff算法
虚拟dom的作用:是为了减少操作真实的dom 初始化显示界面的过程: 1.创建虚拟dom树——>真实dom树——>绘制页面显示 更新界面的过程: 2.绘制页面显示——>setStat ...
- linux 不同服务器之间复制文件
----------------------拷贝文件夹---------------------------------------------- 把当前文件夹tempA拷贝到 目标服务器10.127 ...
- spring集成mybatis的mybatis参考配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC &q ...
- CAS无锁技术
前言:关于同步,很多人都知道synchronized,Reentrantlock等加锁技术,这种方式也很好理解,是在线程访问的临界区资源上建立一个阻塞机制,需要线程等待 其它线程释放了锁,它才能运行. ...
- Linux命令:zip
语法: zip [选项] zip文件 源文件s 选项 全称 含义 举例 -r recursive 递归压缩子目录里的文件(包括子目录里的子目录) zip -r target.z ...
- C语言中插入汇编nop指令
工作过程中,有的时候需要打桩cycle,想在C语言中插入nop指令,可以采取的方法是 头文件中加入#inlude <stdio.h> 定义一个内联函数,然后调用这个函数,不过得测一下平台调 ...