[Ajuda] Otimizaзгo
#1

Como Otimizar este code, se possнvel:

PHP Code:
stock DIZER_HORA()
{
    new 
lStr[45];
    
gettime(H_HORAH_MINH_SEG);
    
    if(
H_HORA == 0strcat(lStr"Agora sao 00:00 da matina [MEIA NOITE]");
    else if(
H_HORA == 1strcat(lStr"Agora sao 01:00 da matina [BOA MADRUGADA]");
    else if(
H_HORA == 2strcat(lStr"Agora sao 02:00 da matina [BOA MADRUGADA]");
    else if(
H_HORA == 3strcat(lStr"Agora sao 03:00 da matina [BOA MADRUGADA]");
    else if(
H_HORA == 4strcat(lStr"Agora sao 04:00 da matina [BOA MADRUGADA]");
    else if(
H_HORA == 5strcat(lStr"Agora sao 05:00 da matina [BOA MADRUGADA]");
    else if(
H_HORA == 6strcat(lStr"Agora sao 06:00 da manha [BOM DIA]");
    else if(
H_HORA == 7strcat(lStr"Agora sao 07:00 da manha [BOM DIA]");
    else if(
H_HORA == 8strcat(lStr"Agora sao 08:00 da manha [BOM DIA]");
    else if(
H_HORA == 9strcat(lStr"Agora sao 09:00 da manha [BOM DIA]");
    else if(
H_HORA == 10strcat(lStr"Agora sao 10:00 da manha [BOM DIA]");
    else if(
H_HORA == 11strcat(lStr"Agora sao 11:00 da manha [BOM DIA]");
    else if(
H_HORA == 12strcat(lStr"Agora sao 12:00 da tarde [BOA TARDE]");
    else if(
H_HORA == 13strcat(lStr"Agora sao 13:00 da tarde [BOA TARDE]");
    else if(
H_HORA == 14strcat(lStr"Agora sao 14:00 da tarde [BOA TARDE]");
    else if(
H_HORA == 15strcat(lStr"Agora sao 15:00 da tarde [BOA TARDE]");
    else if(
H_HORA == 16strcat(lStr"Agora sao 16:00 da tarde [BOA TARDE]");
    else if(
H_HORA == 17strcat(lStr"Agora sao 17:00 da tarde [BOA TARDE]");
    else if(
H_HORA == 18strcat(lStr"Agora sao 18:00 da tarde [BOA TARDE]");
    else if(
H_HORA == 19strcat(lStr"Agora sao 19:00 da noite [BOA NOITE]");
    else if(
H_HORA == 20strcat(lStr"Agora sao 20:00 da noite [BOA NOITE]");
    else if(
H_HORA == 21strcat(lStr"Agora sao 21:00 da noite [BOA NOITE]");
    else if(
H_HORA == 22strcat(lStr"Agora sao 22:00 da noite [BOA NOITE]");
    else if(
H_HORA == 23strcat(lStr"Agora sao 23:00 da noite [BOA NOITE]");
    return 
1;

Reply
#2

Nгo sou muito bom nгo, mas tentei, fiz o seguinte:

Code:
DIZER_HORA()
{
    new Hora, Minuto, Segundo;
    new Hora2[3];
    gettime(Hora, Minuto, Segundo);
	if(Hora < 10) format(Hora2, 3, "0%d", Hora);
 	else if(Hora > 9) format(Hora2, 3, "%d", Hora);

	new Bom[15];
	
	if(Hora >= 0 &&  Hora < 6) Bom = "Boa Madrugada";
	if(Hora > 5 &&  Hora < 12) Bom = "Bom Dia";
	if(Hora > 11 &&  Hora < 19) Bom = "Boa Tarde";
	if(Hora > 18) Bom = "Boa Noite";
	
	new Str[40];
	format(Str, 40, "Agora й %s:00 [%s]" Hora2, Bom);
    
    return 1;
}
Obs: Fiz sу uma parte, precisa completar ali no final.
Reply
#3

Meu primeiro pensamento й este:

PHP Code:
new _hourprefix[][][] = 
{
    {
"matina","BOA MADRUGADA"},
    {
"manha","BOM DIA"},
    {
"tarde","BOA TARDE"},
    {
"noite","BOA NOITE"}
};

stock Dizerhora(hora)
{
    new 
pos hora 6;
    
printf("Agora sгo %d da %s [%s]",hora,_hourprefix[pos][0],_hourprefix[pos][1]);

Reply
#4

Voces nao otimizaram, apenas adicionaram funзoes diferentes, mas vlw a intensao! =(
Reply
#5

Quote:
Originally Posted by F1N4L
View Post
Voces nao otimizaram, apenas adicionaram funзoes diferentes, mas vlw a intensao! =(
Cara, o meu acho que nгo mudou muita coisa, a nгo ser que reduziu o tamanho, mas o do arakuta ta otimizado sim.
Reply
#6

@edit
Reply
#7

Quote:
Originally Posted by F1N4L
View Post
Voces nao otimizaram, apenas adicionaram funзoes diferentes, mas vlw a intensao! =(
Bem se nao achas que o arakuta otimizou o teu codigo nao sei o que queres.
Se pensas que um simples switch ia ficar melhor, desengana-te.
Reply
#8

Quote:
Originally Posted by F1N4L
View Post
Voces nao otimizaram, apenas adicionaram funзoes diferentes, mas vlw a intensao! =(
Oque o Arakuta fez, foi uma уtima otimizaзгo da versгo original do seu cуdigo.

Parabйns pra ele e +rep.


Se vocк estб procurando chegar o cуdigo por si prуprio, acho que vocк poderia tomar umas dicas para seguir.

1Є dica: Se o seu cуdigo contйm muitas redundвncias, й porque algo estб errado, vocк pode comeзar removendo elas.

Exemplo: vocк usa 24 strcat's, aplicados na mesma variбvel, utilizando a mesma STRING, mudando apenas algumas besteiras que sгo relativas de acordo com o horбrio.

Ou seja, se o resultado final depende do horбrio como base, jб й certo que vocк pode resolver esse problema utilizando matemбtica simples, assim, removendo as redundвncias do seu cуdigo e deixando ele mais bonito...

Que foi exatamente oque o Arakuta fez.

2Є dica: Se o seu cуdigo contйm muito if-else, й porque algo estб errado, mesmo esquema da primeira dica.

As pessoas acham que o if-else resolve tudo, e realmente resolve, mas nгo й o melhor resultado para ser alcanзado e muitas vezes pode ser substituнdo por matemбtica simples tambйm, como citado no exemplo acima.



O uso de if-else deve ser valorizado quando vocк trabalha com diferenзas ambientais.

P: Como assim diferenзas ambientais?
R: Quando vocк tem dois ou mais ambientes diferentes, como por exemplo:

Se o seu cуdigo contйm 2 perfis de usuбrios diferentes, sendo 1 admin e 1 usuбrio normal, quando vocк chama um mйtodo dependendo do tipo de usuбrio, o mйtodo toma atitudes diferenciadas, logo vocк tem ambientes diferentes dentro desse cуdigo que exige a utilizaзгo de uma estrutura de controle.



Essas duas dicas se aplicam perfeitamente no seu problema, otimizaзгo de verdade, й vocк fazer uma negociaзгo com o seu computador entre velocidade e uso de memуria... Nem sempre vocк consegue encontrar um resultado bom suficiente que agrade ambos, logo se vocк quer um cуdigo otimizado em questхes de uso de memуria, vocк consequentemente tem um cуdigo mais lento para ser executado, e vice-versa.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)