A partir de 6 de dezembro de 2017, o conjunto de entrega padrão MetaTrader 5 inclui as chamadas classes genéricas, que implementam algoritmos eficientes para armazenamento e extração de dados. Este ramo é criado para descrever estas aulas, exemplos de trabalho com elas e para sugestões de como melhorar o seu trabalho.
O que é genérico? Genérico é uma classe de modelo especial que pode armazenar tipos de dados personalizados. A identificação do tipo é realizada no momento da compilação e, portanto, o alto desempenho é alcançado.
Porquê genérico? Normalmente os programadores novatos estão familiarizados com apenas um tipo de colecções: um array. Mas há muitas tarefas em que trabalhar com uma matriz é ineficaz. Imagine que temos um conjunto composto por um milhão de identificadores únicos, por exemplo, mil pedidos. Como verificar se existe uma encomenda com o número N neste milhar de encomendas? Se utilizarmos uma das classes genéricas, esta tarefa pode ser realizada quase imediatamente, em um tempo constante, o que não depende do número de elementos que estamos procurando. Existem outros problemas, onde o algoritmo correto da coleção genérica pode ser mais rápido do que o algoritmo inventado pelo programador.
É um tema interessante.
Pessoalmente, acho que não há nada mais eficiente na programação do que organizar os dados dentro das matrizes e trabalhar corretamente com essas matrizes em loops. Esta é a base do básico. Todas as outras soluções são derivadas, que consomem tempo adicional de computador e criam despesas gerais.
Arrays globais, arrays locais, loops e funções. Tudo.
Aqueles que são mestres hábeis nestas ferramentas estarão à frente de todos os outros em eficiência.
Procurei-o. Está tudo escrito correctamente. Sua resposta é que é preciso uma média de O(1) para encontrar um item no dicionário, ou seja, instantâneo.
Pessoalmente, acho que não há nada mais eficaz na programação do que saber como organizar corretamente os dados dentro das arrays e como trabalhar corretamente com essas arrays em loops. Esta é a base do básico. Todas as outras soluções são derivadas, que levam tempo adicional de computador e criam despesas gerais.
Arrays globais, arrays locais, loops e funções. Tudo.
Os programadores que conseguem dominar estas ferramentas com maestria estarão à frente de todos os outros em eficiência.
imho.
Peter, mais devagar, por favor. Esta é uma discussão sobre novas aulas de SB, não sobre suas declarações abstratas. Por favor, não desvie o tópico para o lado. Obrigado.
Peter, por favor, abranda. Esta é uma discussão sobre as novas aulas de SB, não sobre suas declarações abstratas. Por favor, não leve o tópico para o lado. Obrigado.
Eu tenho o direito de expressar a minha opinião? Ou é intolerável para si?
ReTeg Konow: Tenho direito à minha opinião? Ou é intolerável para si?
Não. porque esta opinião já foi expressa 100 vezes e aqui novamente com o seu samovar como o oop é mau etc. você já ouviu o suficiente desta opinião, você está farto dela.
Não. O(n) é devido a colisões de hash em casos muito raros. Estas são estimativas de complexidade para o algoritmo ideal. O número de colisões está relacionado com a sobrecarga de memória
No caso normal não há essencialmente necessidade de procurar, porque ao calcular o hash já sabemos essencialmente a localização do elemento desejado
A média de tempo O(1) pior O(n) e desempenho é fortemente dependente de haxixe.
O(n) - isso é se você for frente a frente.
A partir de 6 de dezembro de 2017, o conjunto de entrega padrão MetaTrader 5 inclui as chamadas classes genéricas, que implementam algoritmos eficientes para armazenamento e extração de dados. Este ramo é criado para descrever estas aulas, exemplos de trabalho com elas e para sugestões de como melhorar o seu trabalho.
O que é genérico? Genérico é uma classe de modelo especial que pode armazenar tipos de dados personalizados. A identificação do tipo é realizada no momento da compilação e, portanto, o alto desempenho é alcançado.
Porquê genérico? Normalmente os programadores novatos estão familiarizados com apenas um tipo de colecções: um array. Mas há muitas tarefas em que trabalhar com uma matriz é ineficaz. Imagine que temos um conjunto composto por um milhão de identificadores únicos, por exemplo, mil pedidos. Como verificar se existe uma encomenda com o número N neste milhar de encomendas? Se utilizarmos uma das classes genéricas, esta tarefa pode ser realizada quase imediatamente, em um tempo constante, o que não depende do número de elementos que estamos procurando. Existem outros problemas, onde o algoritmo correto da coleção genérica pode ser mais rápido do que o algoritmo inventado pelo programador.
É um tema interessante.
Pessoalmente, acho que não há nada mais eficiente na programação do que organizar os dados dentro das matrizes e trabalhar corretamente com essas matrizes em loops. Esta é a base do básico. Todas as outras soluções são derivadas, que consomem tempo adicional de computador e criam despesas gerais.
Arrays globais, arrays locais, loops e funções. Tudo.
Aqueles que são mestres hábeis nestas ferramentas estarão à frente de todos os outros em eficiência.
imho.
Sugiro simplificar os nomes - torná-los mais lógicos. Por exemplo, a CArrayList é um Array ou List em mql5 uma implementação de ambos?
Tudo isto leva a perguntas e confusão. IMHO, devemos usar stl e não C# ou Java. Ou remova C na frente dele, que seja apenas a ArrayList.
...
Pelo contrário, eu gosto muito de usar C#.
Eu disse-o muito claramente.
Vejam o que está destacado.
Se você puder dar exemplos, por exemplo, sobre a busca entre milhares de negócios.
ESTÁ BEM.
Este é um tópico interessante.
Pessoalmente, acho que não há nada mais eficaz na programação do que saber como organizar corretamente os dados dentro das arrays e como trabalhar corretamente com essas arrays em loops. Esta é a base do básico. Todas as outras soluções são derivadas, que levam tempo adicional de computador e criam despesas gerais.
Arrays globais, arrays locais, loops e funções. Tudo.
Os programadores que conseguem dominar estas ferramentas com maestria estarão à frente de todos os outros em eficiência.
imho.
Peter, mais devagar, por favor. Esta é uma discussão sobre novas aulas de SB, não sobre suas declarações abstratas. Por favor, não desvie o tópico para o lado. Obrigado.
Peter, por favor, abranda. Esta é uma discussão sobre as novas aulas de SB, não sobre suas declarações abstratas. Por favor, não leve o tópico para o lado. Obrigado.
Tenho direito à minha opinião? Ou é intolerável para si?
Tenho o direito de expressar a minha opinião? Ou é intolerável para si?
Sua opinião é normalmente um tratado sobre Guerra e Paz em três volumes. Por isso é melhor abster-se.
Nota - este é um segundo pedido de um moderador.
O(n) é para frente a frente.
Não. O(n) é devido a colisões de hash em casos muito raros. Estas são estimativas de complexidade para o algoritmo ideal. O número de colisões está relacionado com a sobrecarga de memória
No caso normal não há essencialmente necessidade de procurar, porque ao calcular o hash já sabemos essencialmente a localização do elemento desejado