evandrolnr
-
Total de itens
10 -
Registro em
-
Última visita
Posts postados por evandrolnr
-
-
Você está colocando o nível de otimização como zero?
Abraços!
Apenas estou avaliando a performance das linguagens.
Veja alguns testes comparativos
Liguagem C 25 trilhões de iterações em meio segundo
Java 10 bilhões de iterações em 25 segundos
Natural* 5 milhões de iterações em 5 segundos
*Linguagem Nativa do banco de dados Adabas
-
Pessoal, estou impressionado com a velocidade de execução de um loop na linguagem C.
O programa abaixo gera 25 trilhões de iterações, e é executado imediatamente (não leva nem meio segundo).
Estou fazendo alguma coisa errada, ou é isto mesmo? :blink:
Estou usando sistema operacional Unix, computador IBM, AIX.
/* TestaLoop.c */ #include <stdio.h> #include <stdlib.h> int main(){ for(int i=0;i< 5000000;i++) for(int j=0;j< 5000000;j++) if (i == 3000000 && j == 3000000) printf("\nachou i e j %d\t%d\n",i,j); return 0; }
-
Estive estudando a diferença entre o uso dos caracteres '\r' e '\n',
e observei que:
1) quando usamos '\r' tudo o que já foi digitado
na linha corrente é descartado, e prevalece o novo texto.
2) quando usamos '\n' é impresso o que está na linha corrente
e o programa pula para a próxima linha para iniciar o novo texto.
No exemplo do programa a seguir, a saída é:
inicio
testando2
testando3
testando4
/* TestaReturn1.c */ #include <stdio.h> #include <stdlib.h> int main() { printf("inicio"); printf("\n\ntestando1\rtestando2\n\n"); printf("\n\ntestando3\ntestando4\n\n"); return 0; }
Alguém comenta? :rolleyes:
-
Eu testei a última solução proposta e funcionou.
Obrigado!
:rolleyes:
-
A versão do comilador c que estou usando (Oracle ProC) não tem o include <conio.h>. Peguei um programa de treinamento que usa '\r' como teste de <enter> (vide abaixo), e converti a função getche() em scanf(). A versão do programa que eu fiz só funciona se eu usar '\n' como teste de<enter> ?! :blush:
/* Contachar.C */ /* Conta caracteres de uma frase */ #include <stdio.h> #include <stdlib.h> #include <conio.h> para getche() */ int main() { int cont=0; /* Contador */ while(getche() != '\r') /* Enquanto não [Enter] */ cont++; /* Corpo do laço */ /* Fora do laço */ printf("\nO número de caracteres é %d\n" , cont); system("PAUSE"); return 0; }
-
Acho que descobri o que estava errado com o <enter>.
Ao pressionar <return> obtemos uma nova linha.
O caracter que indica nova linha é '\n', e não '\r'.
Não sei ainda em que caso é usado '\r'.
O programa ficou assim:
#include <stdio.h> #include <stdlib.h> int main() { char resp; char resp1 = '\n'; scanf("%c",&resp); /* é digitado enter para teste */ printf("\nresp %d\n",resp); printf("\nresp1 %d\n",resp1); if ( resp == '\n' ) printf("\nDigitou enter\n"); else printf("\nNão digitou enter\n"); return 0; }
-
Boa noite. Fiz um programa que recebe um <enter> como argumento e testa a
tecla digitada. O compilador não entende o meu enter como sendo tal!?
#include <stdio.h> #include <stdlib.h> int main() { char resp; char resp1 = '\r'; scanf("%c",&resp); /* é digitado <enter> para teste */ printf("\nresp %d\n",resp); printf("\nresp1 %d\n",resp1); if ( resp == '\r' ) printf("\ndigitou enter\n"); else printf("\nnão digitou enter\n"); return 0; }
-
Pessoal, descobri o que estava errado. O Enter ocupa um caracteres, portanto quando digito 'a'<enter> estou digitando dois caracteres. Para driblar este problema, o programa precisa prever um caractere enter. :rolleyes:
/* Adivinha1z.c */ #include <stdio.h> #include <stdlib.h> /* para system() e rand() */ int main() { char resp; /* resposta do usuário */ char resp1; char enter; printf("\n\nDigite uma letra:\n"); scanf("%c%c",&resp,&enter); printf("\nVocê digitou %c",resp); printf("\n\nDigite uma letra:\n"); scanf("%c%c",&resp1,&enter); printf("\nVocê digitou %c",resp1); return 0;
-
Pessoal, boa tarde! Sou novo em linguagem C, e estou fazendo um treinamento!
Estou treinando para usar o Oracle ProC. O Oracle ProC que uso não tem a biblioteca <conio.h>
Por isto, estou usando como entrada de dados a função scanf()
Tenho um programa que recebe dois caracteres. O primeiro é solicitado e mostrado a seguir.
O segundo, durante a execução, não é solicitado (o programa pula o comando).
O que estou fazendo de errado? :huh:
/* Adivinha1z.c */ #include <stdio.h> #include <stdlib.h> /* para system() e rand() */ int main() { char resp; /* resposta do usuário */ char resp1; printf("\n\nDigite uma letra:\n"); scanf("%c",&resp); printf("\nVocê digitou %c",resp); printf("\n\nDigite uma letra:\n"); scanf("%c",&resp1); printf("\nVocê digitou %c",resp1); return 0; }
(Resolvido) Velocidade de loop em C
em C, C++
Postado
Agora sim, está com o tempo de execução mais coerente.
O loop de 1 bilhão de iterações levou 30 segundos.
Obrigado!