Post: Aprimoramentos na biblioteca de tempo de execução do Delphi 10.4

Alessandro Medeiros

Este artigo é uma tradução do artigo: https://blog.marcocantu.com/blog/2020-may-delphi-104-rtl.html

Fala ai Radizeiro e Radizeira, tudo bem com vocês?

Como já sabemos, a Embarcadero lançou recentemente a nova versão do RAD Studio e não poderia faltar novas funcionalidades, correções, e aprimoramento da ferramenta.

Entre as muitas áreas do Delphi aprimoradas na 10.4, há a Runtime Library, que teve muitas melhorias de qualidade e desempenho.

A Delphi Runtime Library é uma das bases do produto, pois as bibliotecas da interface do usuário, como VCL e FireMonkey, também as bibliotecas de acesso ao banco de dados e muitos componentes de terceiros respondem no RTL principal. É por isso que as alterações na RTL são particularmente relevantes, pois tendem a afetar todos os desenvolvedores. Aqui estão algumas mudanças importantes disponíveis.

Funções padrão de contagem de bits

Introduzimos novas funções padrão para operações comuns de processamento de bits de baixo nível, listadas abaixo.

  • Contar zeros à esquerda: conta o número de bits zero à esquerda que precedem o bit mais significativo do parâmetro X. Se X for zero, ele retornará a largura do bit. ou seja, 32 para CountLeadingZeros32 e 64 para CountLeadingZeros64
  • Contar zeros à direita : conta o número de bits zero à direita após o bit menos significativo do parâmetro X. Se X for zero, ele retornará a largura do bit. ou seja, 32 para CountTrailingZeros32 e 64 para CountTrailingZeros64.
  • Contagem da população : conta o número de 1 do parâmetro X. O valor de retorno estará no intervalo de 0 à largura do bit. ou seja, 32 para CountPopulation32 e 64 para CountPopulation64

Recursos adicionais para aulas clássicas

  • A classe TCustomIniFile possui os métodos WriteInt64 e ReadInt64
  • O tipo TGUID possui um novo método IsEmpty
  • A propriedade Items da classe TJSONArray agora é uma propriedade de matriz padrão, permitindo que você escreva myJArray [2] em vez de myJArray.Items [2]

Melhor Buffer de Fluxo

A função CopyFrom da classe TStream base costumava ter um buffer constante fixo para copiar dados (definido como 60K). Isso pode ser muito ineficiente para copiar fluxos grandes. O novo padrão é 1 MB, mas o método possui um parâmetro adicional que você pode usar para fornecer um tamanho de buffer específico, dependendo da operação de cópia que você está executando (fluxos de origem e de destino). A nova assinatura do método é:

// classe TStream
função CopyFrom (const Origem: TStream; Contagem: Int64 = 0;
  BufferSize: Inteiro = $ 100000): Int64

Otimização de performance

  • Otimização de leitura JSON: TJSONReader agora é 50% mais rápido
  • Designação otimizada de um StringList classificado para outro StringList
  • As melhorias de desempenho do RTTI incluem:
    • O TRttiMethod.Invoke é ~ 4 vezes mais rápido
    • A chamada TVirtualInterface é ~ 1.7 vezes mais rápida
    • Os métodos TRttiType.GetXxxx (AName) são ~ 10 vezes mais rápidos
    • Para TValue, várias operações são mais rápidas
  • A operação QuickSort no System.Classes agora é mais eficiente

FreeAndNil

Atualizamos a assinatura do procedimento FreeAndNil, para evitar seu uso com referências de interface e outros tipos de dados não suportados. Agora é declarado exigir uma referência a um TObject:

procedimento FreeAndNil (const [ref] Obj: TObject); na linha;

Isso significa que o uso incorreto do FreeAndNil agora causará um erro do compilador. No passado, o uso incorreto não era detectado, levando a erros difíceis. Observe que, embora o parâmetro seja declarado como const, a variável por referência é realmente modificada.

Recursos sortidos adicionais

  • Removemos algumas dependências que estão bloqueando certos aplicativos de console para serem executados no Windows Server Core
  • O método TStringHelper.GetHashCode foi atualizado para não colocar a string em maiúsculas antes de fazer o hash, portanto seu resultado corresponde a outras operações internas, como a classe TStringComparer.

Também fizemos um bom trabalho nas bibliotecas Parallel Programming Library, AppTethering, cliente REST e HTTP e mais outros subsistemas Delphi RTL. Espero que essas melhorias, mesmo que relativamente pequenas, sejam apreciadas por seu impacto positivo em todos os dias que os desenvolvedores Delphi trabalham.

O pessoal da Embarcadero tem trabalhado incansavelmente para melhorar a linguagem, e levar melhores experiencia para nós programadores.

Nós também não paramos de trabalhar, em poder levar conteúdos que poção lhe auxiliar no seu dia a dia.

E caso você tenha interesse de conhecer mais sobre o CLUBE DE PROGRAMADORES EM DELPHI, onde você não só terá conteúdos relacionados a novas funcionalidades, e claro, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.

CLIQUE AQUI E SAIBA MAIS SOBRE O CLUBE DOS PROGRAMADORES DELPHI




Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre Aprimoramentos na biblioteca de tempo de execução do Delphi 10.4, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao Aprimoramentos na biblioteca de tempo de execução do Delphi 10.4, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2024 – Todos os direitos reservados