当前位置: 首页 > wzjs >正文

网站开发语言哪种简单wordpress comments_template

网站开发语言哪种简单,wordpress comments_template,网站建设公司开票开什么内容,镇江集团网站建设b站Cherno的课[81]-[85] 一、C的可视化基准测试二、C的单例模式三、C的小字符串优化 sso四、跟踪内存分配的简单方法五、C的左值与右值 一、C的可视化基准测试 chrome://tracing/ 总结: cpp的计时器配合自制简易json配置写出类,将时间分析结果写入一个json文件&…

b站Cherno的课[81]-[85]

  • 一、C++的可视化基准测试
  • 二、C++的单例模式
  • 三、C++的小字符串优化 sso
  • 四、跟踪内存分配的简单方法
  • 五、C++的左值与右值

一、C++的可视化基准测试

chrome://tracing/
总结: cpp的计时器配合自制简易json配置写出类,将时间分析结果写入一个json文件,用chrome://tracing 这个工具进行可视化

cherno演示代码地址:https://gist.github.com/TheCherno/31f135eea6ee729ab5f26a6908eb3a5e

b站大神项目地址:https://github.com/GavinSun0921/InstrumentorTimer

二、C++的单例模式

单例是一个类的单一实例

单例就是外表为类形式的命名空间

当我们想要拥有应用于某种全局数据集的功能,
且我们只是想要重复使用时,单例是非常有用的

应用:
随机数生成器类
渲染器

#include <iostream>class Singleton
{
public:Singleton(const Singleton&) = delete;static Singleton& Get(){return s_Instance;}void Function() {}private:Singleton() {}float m_Member = 0.0f;static Singleton s_Instance;
};Singleton Singleton::s_Instance;int main()
{//Singleton& instance = Singleton::Get();auto& instance = Singleton::Get();Singleton::Get().Function();
}
#include <iostream>
// 随机数生成器类
class Random
{
public:Random(const Random&) = delete;// 单例的核心就是Get函数static Random& Get(){return s_Instance;}static float Float() { return Get().IFloat(); }private://internal内部的Float函数float IFloat() { return m_RandomGenerator; }Random() {}float m_RandomGenerator = 0.5f;static Random s_Instance;
};Random Random::s_Instance;int main()
{auto& random = Random::Get();float number = random.Float();std::cout << number << std::endl;std::cin.get();
}

在这里插入图片描述
一旦我有了这个单例,我可以简单地写任何数量的非静态方法并通过Get函数访问它们

或者如果我想的话,我可以删掉一层交互
(指不通过Get().来调用成员函数,而是直接写static函数来包装)

然后编写这些静态函数,在内部映射到可以访问成员数据和类的所有功能的成员函数
在这里插入图片描述

三、C++的小字符串优化 sso

我们不喜欢字符串的原因之一:
是它们倾向于分配内存,C++(快)\ 堆分配(慢),不好

因为我们知道创建一个标准的字符串会导致内存分配
所以很多人会尽量避免,他们会尽量减少字符串的使用

换句话说,如果你有一个非常小的字符串,你就不需使用const char*
或者试图微观管理或优化你的代码
因为这可能不会导致堆分配

#include <iostream>
#include <string>void* operator new(size_t size)
{std::cout << "Allocating " << size << " bytes\n";return malloc(size);
}int main() 
{std::string name = "wm";std::cin.get();
}

在这里插入图片描述
小字符串优化 sso:
足够小的字符串不会导致任何堆分配,因此会使您的程序运行得更快

四、跟踪内存分配的简单方法

#include <iostream>
#include <memory>void* operator new(size_t size)
{std::cout << "Allocating " << size << " bytes\n";return malloc(size);
}void operator delete(void* memory)
{free(memory);
}struct Object
{int x, y, z;
};int main() 
{{std::unique_ptr<Object> obj = std::make_unique<Object>();}std::string name = "wm";std::cin.get();
}

在这里插入图片描述

#include <iostream>
#include <memory>void* operator new(size_t size)
{std::cout << "Allocating " << size << " bytes\n";return malloc(size);
}void operator delete(void* memory, size_t size)
{std::cout << "Freeing " << size << " bytes\n";free(memory);
}struct Object
{int x, y, z;
};int main() 
{{std::unique_ptr<Object> obj = std::make_unique<Object>();}std::string name = "wm";std::cin.get();
}

在这里插入图片描述

#include <iostream>
#include <memory>struct AllocationMetrics
{uint32_t TotalAllocated = 0;uint32_t TotalFreed = 0;uint32_t CurrentUsage() { return TotalAllocated - TotalFreed; }
};static AllocationMetrics s_AllocationMetrics;void* operator new(size_t size)
{s_AllocationMetrics.TotalAllocated += size;return malloc(size);
}void operator delete(void* memory, size_t size)
{s_AllocationMetrics.TotalFreed += size;free(memory);
}struct Object
{int x, y, z;
};static void PrintMemoryUsage()
{std::cout << "Memory Usage: " << s_AllocationMetrics.CurrentUsage() << "bytes\n";
}int main() 
{PrintMemoryUsage();std::string name = "wm";PrintMemoryUsage();{std::unique_ptr<Object> obj = std::make_unique<Object>();PrintMemoryUsage();}PrintMemoryUsage();std::cin.get();
}

在这里插入图片描述
Valgrind也有一些很好的工具来跟踪内存,看看它来自哪里,如何分配等等
注:Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具

五、C++的左值与右值

移动move语义

#include <iostream>void PrintName(const std::string& name)
{std::cout << "[lvalue] " << name << std::endl;
}void PrintName(std::string&& name)
{std::cout << "[rvalue] " << name << std::endl;
}int main()
{std::string firstName = "Yan";std::string lastName = "Chernikov";std::string fullName = firstName + lastName;PrintName(fullName);PrintName(firstName + lastName);std::cin.get();
}

在这里插入图片描述
左值是有某种存储支持的变量,右值是临时值

左值引用仅仅接受左值,除非用const
右值引用仅仅接受右值

如果你在处理一个右值引用,,如果你能从那个临时值中偷取资源,因为它是临时的,这对优化有很大帮助

总结:
左值有地址和值,可以出现在赋值运算符左边或者右边。
右值只有值,只能出现在赋值运算符右边。&&
右值只有值,没有地址, 右值是一个优化技巧(C++),因为右值往往是临时变量的。


文章转载自:

http://WO0kFOpu.hbywj.cn
http://sEIA1IwX.hbywj.cn
http://8HRM5iXc.hbywj.cn
http://frFkkkZd.hbywj.cn
http://oXL7JLmw.hbywj.cn
http://F2eOJuBT.hbywj.cn
http://bMlPm9T7.hbywj.cn
http://gUfm5fYz.hbywj.cn
http://hk1MkQ6g.hbywj.cn
http://ptRR7UHZ.hbywj.cn
http://pQHtZoQy.hbywj.cn
http://3D3MzD76.hbywj.cn
http://8qSwuFvY.hbywj.cn
http://TzHmPl0d.hbywj.cn
http://2GhD1v6Q.hbywj.cn
http://5CaRjddW.hbywj.cn
http://MEL2Dkrh.hbywj.cn
http://jjjTkyCY.hbywj.cn
http://YVNjDAJV.hbywj.cn
http://PxQsQE2X.hbywj.cn
http://3QFaNR3j.hbywj.cn
http://lXgNyPAT.hbywj.cn
http://Vmyp5IZ8.hbywj.cn
http://UoRMZT7o.hbywj.cn
http://ciWwgwqc.hbywj.cn
http://207F9iAC.hbywj.cn
http://2JjhyKKh.hbywj.cn
http://jpf3psJ4.hbywj.cn
http://TDOwYper.hbywj.cn
http://bGkggVlK.hbywj.cn
http://www.dtcms.com/wzjs/612313.html

相关文章:

  • 手工做女宝宝衣服的网站wordpress网站怎么样
  • 可视化导航网站源码图片预览网站 末班
  • 最好的营销网站如何在社交网站上做视频推广
  • 马鞍山做网站的公司78友情链接代码模板
  • 企业网站好做吗闽侯县建设局网站
  • 山东华邦建设集团网站wordpress 禁止过滤
  • 免费企业网站程序上传淮南营销型网站建设怎么样
  • 网站YYQQ建设可以做平面设计兼职的网站
  • 快速建立平台网站开发设计建站流程最佳线上网站制作模板
  • 设计软件基础课程学什么鱼头seo推广
  • 电商网站设计与制作网站中加入百度地图
  • 网站图片分辨率建设银行公户网站
  • 咸阳学校网站建设哪家专业河北pc端网站开发
  • 学院网站设计方案做网站大公司有哪些
  • 网页设计与制作做网站华为商城的网站建设
  • 网站建设费 科目设计师每天都上的网站
  • WordPress生成电商小程序seo优化技术厂家
  • 中职学校网站建设方案做网站推广的公司发展前景
  • 互动案例的网站做网站怎么插音频
  • 亦庄网站开发网址转app
  • 网站做行业认证好处怎么做晒鱼的网站
  • 假网站怎么做南京百姓网免费发布信息网
  • 没有公众号建微信网站网络营销推广的三板斧
  • 注册了网站之后怎么设计wordpress获取tag
  • 微站和网站数据同步呼伦贝尔做网站公司
  • php淘宝商城网站源码全国网站建设大赛
  • 淘客二级域名网站免费建设卡盟网站模板
  • 网站布局的好坏的几个要素wordpress负载均衡上传附件
  • 网站指向ip列表是什么建网站团队
  • 网站建设签收单郑州网站排名公司