From 7890cd1539c4bf1c715bdd035d27a436ea776ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E9=A3=8E=E9=80=8D=E9=81=A5=E6=B8=B8?= Date: Sun, 31 Dec 2023 10:36:38 -0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=B9=E5=A0=86=E6=A0=88?= =?UTF-8?q?=E4=B8=8A=E5=88=86=E9=85=8D=E5=86=85=E5=AD=98=E6=80=A7=E8=83=BD?= =?UTF-8?q?=E5=88=86=E6=9E=90=E7=9A=84=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/basic/ownership/ownership.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/basic/ownership/ownership.md b/src/basic/ownership/ownership.md index 42bc6c23..01fb1f84 100644 --- a/src/basic/ownership/ownership.md +++ b/src/basic/ownership/ownership.md @@ -57,11 +57,8 @@ int* foo() { #### 性能区别 -写入方面:入栈比在堆上分配内存要快,因为入栈时操作系统无需分配新的空间,只需要将新数据放入栈顶即可。相比之下,在堆上分配内存则需要更多的工作,这是因为操作系统必须首先找到一块足够存放数据的内存空间,接着做一些记录为下一次分配做准备。 - -读取方面:得益于 CPU 高速缓存,使得处理器可以减少对内存的访问,高速缓存和内存的访问速度差异在 10 倍以上!栈数据往往可以直接存储在 CPU 高速缓存中,而堆数据只能存储在内存中。访问堆上的数据比访问栈上的数据慢,因为必须先访问栈再通过栈上的指针来访问内存。 - -因此,处理器处理分配在栈上数据会比在堆上的数据更加高效。 +在栈上分配内存比在堆上分配内存要快,因为入栈时操作系统无需进行函数调用(或更慢的系统调用)来分配新的空间,只需要将新数据放入栈顶即可。相比之下,在堆上分配内存则需要更多的工作,这是因为操作系统必须首先找到一块足够存放数据的内存空间,接着做一些记录为下一次分配做准备,如果当前进程分配的内存页不足时,还需要进行系统调用来申请更多内存。 +因此,处理器在栈上分配数据会比在堆上分配数据更加高效。 #### 所有权与堆栈