Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

188
Visualizações
¿Cuál es la diferencia entre la plantilla de cadena y el marcador de posición del marco de registro en Kotlin?

Y ahora, estoy tratando de reescribir mi aplicación Java en Kotlin. Y luego, me encontré con la declaración de registro, como

 log.info("do the print thing for {}", arg);

Así que tengo dos formas de hacer las cosas de registro en Kotlin como log.info("do the print thing for {}", arg) y log.info("do the print thing for $arg") . El primero es el formato delegado a un marco como Slf4j o Log4j; el segundo está usando la plantilla de cadena Kotlin.

Entonces, ¿cuál es la diferencia y el rendimiento de cuál es mejor?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En general, estas dos formas producen el mismo registro, a menos que la biblioteca de registro también esté configurada para localizar el mensaje y los parámetros al formatear el mensaje, lo que la interpolación de cadenas de Kotlin no hace en absoluto.

La diferencia crucial radica en el rendimiento, cuando desactiva el registro (en ese nivel en particular). Como dice la pregunta frecuente de SLF4J :

Existe una alternativa muy conveniente basada en formatos de mensajes. Suponiendo que la entrada es un objeto, puede escribir:

 Object entry = new SomeObject(); logger.debug("The entry is {}.", entry);

Después de evaluar si iniciar sesión o no, y solo si la decisión es afirmativa, la implementación del registrador formateará el mensaje y reemplazará el par '{}' con el valor de cadena de entrada. En otras palabras, este formulario no incurre en el costo de la construcción de parámetros en caso de que la declaración de registro esté deshabilitada.

Las siguientes dos líneas producirán exactamente el mismo resultado. Sin embargo, el segundo formulario superará al primero por un factor de al menos 30, en caso de una declaración de registro deshabilitada.

 logger.debug("The new entry is "+entry+"."); logger.debug("The new entry is {}.", entry);

Básicamente, si el registro está deshabilitado, el mensaje no se construirá si usa el registro parametrizado. Sin embargo, si utiliza la interpolación de cadenas, el mensaje siempre se construirá.

Tenga en cuenta que la interpolación de cadenas de Kotlin se compila en algo similar a lo que se compila en una serie de concatenación de cadenas ( + ) en Java (aunque esto podría cambiar en el futuro).

 "foo $bar baz"

se traduce en:

 StringBuilder().append("foo ").append(bar).append(" baz").toString()

Ver también: No se puede entender por qué usar el registro parametrizado

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda