首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
zhangjiezhi_
掘友等级
码工
微信公众号:码工笔记
获得徽章 22
动态
文章
专栏
沸点
收藏集
关注
作品
赞
20
文章 20
沸点 0
赞
20
返回
|
搜索文章
最新
热门
程序运行性能极限探究(一):CPU 流水线宽度
给你一段程序,如何评估它最快能运行多快呢?哪些因素决定了它运行速度的上限呢?本系列文章试图回答这个问题。 CPU 在每个时钟周期内只能执行一定数量的指令。早期的 CPU 每个时钟只能执行一条指令。现代的支持超标量流水线的 CPU 可以执行 >1 条指令,但也是有其上限的。其所受…
客户端基础知识—— iOS 系统上 mmap 的“妙用”
mmap:文件映射,用于将文件或设备映射到虚拟地址空间中,以使用户可以像操作内存地址一样操作文件或设备。 将硬盘上的文件映射到进程的虚拟地址空间中的一段空间,开发者可以像读写内存一样直接读写硬盘上的文件。 mmap 可以使开发者像操作连续内存一样读写一个文件。且默认使用操作系统…
线程同步机制的分级与性能开销
在日常开发过程中,我们经常会需要使用多线程。而多线程应用程序中,为了保证线程安全,就需要用到原子操作或者各种锁。而且原子操作和锁也有很多种不同的使用方式,每种方式都有其特点和相应的开销,了解这些方式的区别以及其隐含的性能开销对我们实现合适的线程安全机制是非常必要的。 作者将线程…
Flutter 原理初探
上图是 Flutter 官网上的一张全景图。从结构上看,Flutter 主要分为三个层次: 今天主要阐述 Engine 层和 Framework 的一部分关键模块。 DartVM 中的独立执行单元叫做 Isolate,Engine 中叫做 Runner,Embedder 中才对…
初识 JavaScriptCore JIT
今天我们来了解一下JavaScriptCore中的JIT机制。 JIT(Just In Time)编译器:是指程序逻辑以代码(或字节码)形式下发到目标机(如客户端)上,在系统即将运行此逻辑的前一刻,目标机系统上的编译器才将这些代码编译成机器指令,然后再交给系统执行。因为它的编译…
如何调整iOS应用程序的栈大小
上次跟同事讨论时聊到一个问题:应用程序在运行时是否能动态调整栈的大小? 有的同学觉得可以,有的觉得不行,今天总结一下。 其中,在iPhone 7(iOS 14)上:r.rlim_cur == r.rlim_max == 1032192,rlim_cur已经与rlim_max相等…
【Clang/LLVM入门系列】如何让 Xcode 使用自定义 Clang 及其插件
在使用libTooling接口实现了一个clang plugin后,我们可能需要将它集成到Xcode工程中,让Xcode使用我们定制版本的Clang,并且在编译时加载我们新写的plugin。 本文具体讲一下需要配置的Xcode工程细节。 1. 定义环境变量 2. 关闭COMPI…
如何知道一个锁到底被哪个线程占用?
在多线程环境下调试或定位问题时,有时我们会发现某重要线程被卡住在等待某个锁上,但具体是哪个线程或哪段代码拿了锁(特别是代码逻辑比较复杂、线程较多的情况下)又无法一下看出来。 这时我们就需要在调试器里把所有线程点一遍,看他们当前的调用栈,然后再对照源代码看各线程的调用栈上有没有哪…
dispatch_semaphore 会造成优先级反转,慎用!
下面先介绍一下 iOS 平台上的 QoS 概念和优先级反转避免机制,最后再说明为什么 dispatch_semaphore 不能避免优先级反转。 1. QoS 传递 QoS(Quality of Service),用来指示某任务或队列的运行优先级。 调度程序会根据这些信息决定 …
客户端基础知识——关于 signal 不可不知的工程细节
在客户端开发中,我们有时会用到信号(signal)机制。 信号是操作系统提供的一种用于通知应用程序某些特殊事情发生了的通知机制。signal man page[1]中列出了一系列不同的信号,常见的有: 应用程序在收到大多数类型的信号时,其默认行为都是直接退出(崩溃)。 开发者可…
下一页
个人成就
文章被点赞
279
文章被阅读
133,133
掘力值
2,887
关注了
11
关注者
230
收藏集
2
关注标签
10
加入于
2020-07-17