www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

si Vale la pena evitar marca присваивния := en el Go al cargado por el бекенде?

iliyaisd 2018-10-30 19:06:43

Sabž. Como yo lo entiendo, cuando := Go ocurre аллокация de la memoria, que bajo carga puede jugar una broma pesada. Vale la pena si es posible, crear variables con la mayor anticipación posible y a través de un var? O eso no importa?

Gracias.

sim3x 2018-10-30 19:11:56

Cuántos M RPS tiene?


iliyaisd 2018-10-30 19:14:04

sim3x, para que el esférico en el vacío del caso. Que será de 1 millón de consultas por segundo.


deliro 2018-10-30 19:17:11

iliyaisd, entonces usted tiene un montón de dinero. Simplemente compre el Google del autor golang.


rustler2000 2018-10-30 19:45:15

SSA mismo - cuidado.
Si que confunde lo https://go.godbolt.org/

Y аллокация no para todo encuentra un escape de analysis.
Bueno y si de хардкору el bce. y esto y lo puede atar кастомным линтером en el átomo.


lega 2018-10-30 20:15:11

c := no hay problema, la memoria переиспользуется.

deliro, con antenna de host en la antenna de host de las solicitudes de пуляет...


Total answers: 2

Tyranron 2018-10-30 22:47:54

Esto no importa.
No hay que "ahorrar en las cerillas" y observar rituales vacíos. Se escribe una aplicación normal, para lo entendían y bien leído los otros desarrolladores. Cuando se trata de optimizar, Usted профилируете y ver donde se tiene problemas y затыки. Y quitas.

Que el mismo se refiere específicamente a la аллокаций, entonces no es tan (o más bien, no es así).
Аллокация es una selección de piezas de la memoria en el montón (heap), que luego debe ser eliminado recolector de elementos no utilizados. Precisamente porque se considera que es un golpe para el rendimiento, así como la suma de trabajo como аллокатору, y el recolector de elementos no utilizados.
Pero el uso de := de por sí, no se activa/desactiva el uso de аллокации. Sólo se declara una nueva variable.
Se realiza una аллокация depende de otro. En primer lugar, de los datos a crear. Si es un tipo primitivo de tamaño fijo, publicado en стэке (por ejemplo int), el trabajo con un montón de Vosotros no será en absoluto, respectivamente, y аллокаций. En segundo lugar, de esa mágica piezas como escape analysis, que puede fácilmente colocar los datos de la pila en стэке, si ella así lo desea, entonces аллокации tienes ocurrir, también, que no se.

Vamos a ver algunos ejemplos:

  1. var i int
    i = 1
    i = 2

    0 аллокаций, así como i se coloca estrictamente en стэке.

  2. i := 1
    i := 2

    0 аллокаций, así como i se coloca estrictamente en стэке.

  3. i := new(Struct{1,2,3})
    i := new(Struct{3,2,1})

    2 аллокации, así como new publicará los datos en una pila y devuelve un puntero a ellos. Pero sólo si el escape analysis no mueve todo esto en el stack (que concretamente en este caso bastante probable).

  4. var i *Struct
    i = new(Struct{1,2,3})
    i = new(Struct{3,2,1})

    2 аллокации, así como new todavía publicará los datos en una pila y devuelve un puntero a ellos.



Como ves, := de por sí nada al аллокациям no se refiere, y es sólo sintáctica de azúcar.

P. S. Recientemente habré sido a. artículo pro de la biblioteca estándar Go, para indicar que la sesión prematuros микрооптимизациями sin perfiles - es bastante absurda la idea.

golangmoses 2018-11-08 02:33:13

utilice sync.Pool

Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.