Postagem em destaque

A incrível velocidade do Go

Imagem
Um dos motivos que gosto do Go (a linguagem de programação, não o jogo), é que ele é extremamente rápido. E não estou falando de utilizar goroutines pois aí é covardia. Estamos migrando um sistema de Coldfusion para Go e PHP e uma das rotinas insere um registro no banco de dados no início e outra no fim do processo. Pense como se fosse um log, mas um log específico para essa rotina. Dessa forma: 2023-05-18 17:45:03. 687     ... [processaImagem] Incorporando imagem 2023-05-18 17:45:03. 688     ... [processaImagem] Imagem incorporada Entre o inicio e o final do processamento levou 1ms. Até aí, tudo bem, se não fosse o fato dessa tabela ter o campo timestamp como parte da chave primária. Se reparar, o tempo é definido em milissegundos. Com o Coldfusion esse processo dura cerca de 20ms. Simplesmente migrando para Go, o tempo caiu muito, para menos de 1ms e assim, começou a dar erro de chave duplicada. A solução? Depende, sempre depende. No nosso contexto, a mais simples foi feita, pois nã

Arrays: elementos repetidos e número de ocorrências (em Java)

Resolvi fazer, em Java, o mesmo algoritmo mostrado em Arrays: elementos repetidos e número de ocorrências. Assim é possível comparar os dois códigos e talvez ajude a escolher uma linguagem de programação ou pelo menos mostrar as principais diferenças entre elas.

Entre as duas (C++ e Java) acho que a versão feita em Java ficou mais clara.


package teste;

import java.util.ArrayList;

public class Run {
  public static void main(String[] args) {
    ArrayTeste at = new ArrayTeste();
    at.start();
  }
}

// classe que contem o valor do número e a quantidade de ocorrências
class Number {
  int value;
  int count;

  public  Number(int x, int y){
    value = x;
    count = y;
  }
}

// classe principal
class ArrayTeste{
  void start(){
    // array de entrada
    int a[] = {5, 3, 5, 1, 1, 1, 2, 1};

    int i, j;
    boolean found;

    ArrayList<number> lista = new ArrayList<number>();

    // percorre o array de entrada
    for(i=0; i<a.length; i++){
      // seta como não encontrado
      found = false;

      // procura na lista de números o elemento "i" do array de entrada
      for(j=0; j<lista.size(); j++){
        // encontrou, incrementa e sai fora
        if (a[i] == lista.get(j).value){
          lista.get(j).count++;
          found = true;
          break;
        }
      }
      
      // não encontrou o número, armazena
      if (!found) 
        lista.add(new Number(a[i], 1));      
    }

    System.out.println("[Número, Repetições]");
    for (Number n:lista)
      System.out.println("[" + n.value + ", " + n.count + "]");    
  }
}

Comentários

  1. tenho uma duvida tenho uma combinação de 10 dezenas que é uma matriz 6 colunas e 210 linhas, a qtde de ocorrência de cada dezena é como assim a 1 se repete 126, 2 se repete 126 e assim por diante ate 10, fazendo um fechamento para quadra da 20 cartões, aqui mora o problema como ter a mesma ocorrência dezenas dentro dos 20 cartões pode me da uma luz.
    abraço.
    joelsonc3@gmail.com

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Google Hacking

FTP não funciona no PHP