Git Product home page Git Product logo

Comments (9)

RainbowMango avatar RainbowMango commented on August 21, 2024

请问你看的哪个版本的源吗?我确认一下

from goexpertprogramming.

RainbowMango avatar RainbowMango commented on August 21, 2024

感觉你说的是这里:

func growWork(t *maptype, h *hmap, bucket uintptr) {
	// make sure we evacuate the oldbucket corresponding
	// to the bucket we're about to use
	evacuate(t, h, bucket&h.oldbucketmask())

	// evacuate one more oldbucket to make progress on growing
	if h.growing() {
		evacuate(t, h, h.nevacuate)
	}
}

代码链接:https://github.com/golang/go/blob/0ed31eb73b13bd57aff727f4ab759c6701d45a01/src/runtime/map.go#L1126-L1135

from goexpertprogramming.

DaFeiL avatar DaFeiL commented on August 21, 2024

from goexpertprogramming.

RainbowMango avatar RainbowMango commented on August 21, 2024

感谢指出,

-考虑到如果map存储了数以亿计的键值对,一次性搬迁将会造成比较大的延时,Go采用逐步搬迁策略,即每次访问map时都会触发一次搬迁,每次搬迁2个键值对。
+考虑到如果map存储了数以亿计的键值对,一次性搬迁将会造成比较大的延时,Go采用逐步搬迁策略,即每次访问map时都会触发一次搬迁,每次搬迁2个bucket。

这么修改了。

PS:你看的网页版不知道是谁维护的 :(, 这个修改将在下次重印时修正。

from goexpertprogramming.

DaFeiL avatar DaFeiL commented on August 21, 2024

from goexpertprogramming.

RainbowMango avatar RainbowMango commented on August 21, 2024

纸质版目前的表述是:

触发扩容需要满足以下任一条件:
- 负载因子大于6.5时,也即平均每个bucket存储的键值对达到6.5个以上;
- overflow数量达到2^min(15,B)时;

有问题吗?

from goexpertprogramming.

DaFeiL avatar DaFeiL commented on August 21, 2024

from goexpertprogramming.

RainbowMango avatar RainbowMango commented on August 21, 2024

再次感谢。

from goexpertprogramming.

DaFeiL avatar DaFeiL commented on August 21, 2024

from goexpertprogramming.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.