За последние 24 часа нас посетили 180033 программиста и 3091 робот. Сейчас ищут 1797 программистов ...

Помогите оптимизировать код.

Тема в разделе "PHP для новичков", создана пользователем html-программист, 10 фев 2012.

  1. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Я тут наваял какой-то фигни, но она работает очень и очень медленно. У Попова в видеокурсе нет ни слова, как это можно оптимизировать.

    config.php
    Код (Text):
    1. <?php
    2.     $sizei=32;
    3.     $sizej=32;
    4. ?>
    index.php
    Код (Text):
    1. <?php
    2.     include 'config.php';
    3.     echo '<form action="index.php" method="post">';
    4.     for($i=0; $i<$sizei; $i++){
    5.         for($j=0; $j<$sizej; $j++){
    6.             echo '<input type="text" name="c'.$i.'_'.$j.'" value="1" size=1>'; 
    7.         }
    8.         echo '<br>';
    9.     }
    10.     echo '<input type="submit" name="submit" value="submit">';
    11.     echo '</form>';
    12.  
    13.  
    14.  
    15.     for($i=0; $i<$sizei; $i++){
    16.         for($j=0; $j<$sizej; $j++){
    17.             $cstring=c.$i._.$j;
    18.             $m[$i][$j]=$_POST[$cstring];
    19.  
    20.         }
    21.     }
    22.  
    23.  
    24.  
    25.     $filename='mij.txt';
    26.     $mw=fopen($filename, 'w');
    27.     $m=serialize($m);
    28.     fwrite($mw, $m);
    29.     fclose($mw);
    30. ?>
    test.php
    Код (Text):
    1. <?php
    2.     include 'config.php';
    3.  
    4.     $mij='mij.txt';
    5.     $m3ijk='m3ijk.txt';
    6.     $xij='xijk.txt';
    7.     $yij='yijk.txt';
    8.     $xymovesij='xymoves.txt';
    9.  
    10.     if(file_exists($mij)){
    11.         $rmij=fopen($mij, 'r');
    12.         $m=unserialize(fread($rmij,filesize($mij)));
    13.         fclose($rmij);
    14.     }
    15.  
    16.     if(file_exists($m3ijk)){
    17.         $rm3ijk=fopen($m3ijk, 'r');
    18.         $m3=unserialize(fread($rm3ijk,filesize($m3ijk)));
    19.         fclose($rm3ijk);
    20.     }
    21.  
    22.     if(file_exists($xij)){
    23.         $rxij=fopen($xij, 'r');
    24.         $x=unserialize(fread($rxij,filesize($xij)));
    25.         fclose($rxij);
    26.     }
    27.  
    28.     if(file_exists($yij)){
    29.         $ryij=fopen($yij, 'r');
    30.         $y=unserialize(fread($ryij,filesize($yij)));
    31.         fclose($ryij);
    32.     }
    33.  
    34.  
    35.     if(file_exists($xymovesij)){
    36.         $rxymovesij=fopen($xymovesij, 'r');
    37.         $xymoves=unserialize(fread($rxymovesij,filesize($xymovesij)));
    38.         fclose($rxymovesij);
    39.     }
    40.  
    41.  
    42.     header ("Content-type: image/png");
    43.     $img = imagecreatetruecolor($sizei*4, $sizej*2);
    44.  
    45.     for($i=0;$i<$sizei;$i++){
    46.         for($j=0;$j<$sizej;$j++){
    47.  
    48.             $m2[$i][$j]=0;
    49.             for($k=0;$k<8;$k++){
    50.                 if(!isset($x[$i][$j][$k])){
    51.                     $x[$i][$j][$k]=$i;
    52.                     $y[$i][$j][$k]=$j;
    53.                 }
    54.                 $i0=$x[$i][$j][$k];
    55.                 $j0=$y[$i][$j][$k];
    56.                 $m2[$i][$j]=$m2[$i][$j]+$m[$i0][$j0];
    57.             }
    58.  
    59.             for($k=0;$k<9;$k++){
    60.                 if ($m[$i][$j]!=-1){
    61.                     $k3=$k+9;
    62.                 }else{
    63.                     $k3=$k;
    64.                 }
    65.                 $k2=($k-4)*2;
    66.                 switch($m2[$i][$j]){
    67.                     case $k2:  
    68.                         if(isset($m3[$i][$j][$k3])){
    69.                             $m2[$i][$j]=$m3[$i][$j][$k3];
    70.                             $m3[$i][$j][$k3]=$m3[$i][$j][$k3]*-1;
    71.                         }else{
    72.                             $m3[$i][$j][$k3]=1;
    73.                             $m2[$i][$j]=$m3[$i][$j][$k3];
    74.                         }
    75.                         break;
    76.                 }
    77.             }
    78.            
    79. //***************************** Графика *****************************
    80.             if($m[$i][$j]>0) {
    81.                 $r=255;
    82.                 $g=255;
    83.                 $b=255;
    84.             } else {
    85.                 $r=0;
    86.                 $g=0;
    87.                 $b=0;
    88.             }
    89.        
    90.             $ink=imagecolorallocate($img,$r,$g,$b);
    91.             imagesetpixel($img,$i*2,$j*2,$ink);
    92.             imagesetpixel($img,$i*2+1,$j*2+1,$ink);
    93.             imagesetpixel($img,$i*2+1,$j*2,$ink);
    94.             imagesetpixel($img,$i*2,$j*2+1,$ink);
    95. //***************************** Графика *****************************
    96.  
    97.  
    98.  
    99.             $moves=array(-1,-1,1,1,0,-1,0,1,1,-1,-1,1,-1,0,1,0,1,0,-1,0,-1,1,1,-1,0,1,0,-1,1,1,-1,-1);
    100.             for($k=0;$k<8;$k++){
    101.                 $i0=$x[$i][$j][$k];
    102.                 $j0=$y[$i][$j][$k];
    103.                 if($m[$i0][$j0]==-1){
    104.                     if(!isset($xymoves[$i][$j][$k][0])){
    105.                         $karray=($k+1)*4-4;
    106.                         $xymoves[$i][$j][$k][0]=$moves[$karray];
    107.                     }
    108.                     $x[$i][$j][$k]=$x[$i][$j][$k]+$xymoves[$i][$j][$k][0];
    109.                     if($m[$i][$j]==-1){
    110.                         switch($xymoves[$i][$j][$k][0]){
    111.                             case -1:
    112.                                 $xymoves[$i][$j][$k][0]=0;
    113.                                 break;
    114.                             case 0:
    115.                                 $xymoves[$i][$j][$k][0]=1;
    116.                                 break;
    117.                             case 1:
    118.                                 $xymoves[$i][$j][$k][0]=-1;
    119.                                 break;
    120.                         }
    121.                     }else{
    122.                         switch($xymoves[$i][$j][$k][0]){
    123.                             case -1:
    124.                                 $xymoves[$i][$j][$k][0]=1;
    125.                                 break;
    126.                             case 0:
    127.                                 $xymoves[$i][$j][$k][0]=-1;
    128.                                 break;
    129.                             case 1:
    130.                                 $xymoves[$i][$j][$k][0]=0;
    131.                                 break;
    132.                         }
    133.                     }
    134.                     if(!isset($xymoves[$i][$j][$k][1])){
    135.                         $karray=($k+1)*4-3;
    136.                         $xymoves[$i][$j][$k][1]=$moves[$karray];
    137.                     }
    138.                     $y[$i][$j][$k]=$y[$i][$j][$k]+$xymoves[$i][$j][$k][1];
    139.                     if($m[$i][$j]==-1){
    140.                         switch($xymoves[$i][$j][$k][1]){
    141.                             case -1:
    142.                                 $xymoves[$i][$j][$k][1]=1;
    143.                                 break;
    144.                             case 0:
    145.                                 $xymoves[$i][$j][$k][1]=-1;
    146.                                 break;
    147.                             case 1:
    148.                                 $xymoves[$i][$j][$k][1]=0;
    149.                                 break;
    150.                         }
    151.                     }else{
    152.                         switch($xymoves[$i][$j][$k][1]){
    153.                             case -1:
    154.                                 $xymoves[$i][$j][$k][1]=0;
    155.                                 break;
    156.                             case 0:
    157.                                 $xymoves[$i][$j][$k][1]=1;
    158.                                 break;
    159.                             case 1:
    160.                                 $xymoves[$i][$j][$k][1]=-1;
    161.                                 break;
    162.                         }
    163.                     }
    164.                 }else{
    165.                     if(!isset($xymoves[$i][$j][$k][2])){
    166.                         $karray=($k+1)*4-2;
    167.                         $xymoves[$i][$j][$k][2]=$moves[$karray];
    168.                     }
    169.                     $x[$i][$j][$k]=$x[$i][$j][$k]+$xymoves[$i][$j][$k][2];
    170.                     if($m[$i][$j]==-1){
    171.                         switch($xymoves[$i][$j][$k][2]){
    172.                             case -1:
    173.                                 $xymoves[$i][$j][$k][2]=0;
    174.                                 break;
    175.                             case 0:
    176.                                 $xymoves[$i][$j][$k][2]=1;
    177.                                 break;
    178.                             case 1:
    179.                                 $xymoves[$i][$j][$k][2]=-1;
    180.                                 break;
    181.                         }
    182.                     }else{
    183.                         switch($xymoves[$i][$j][$k][2]){
    184.                             case -1:
    185.                                 $xymoves[$i][$j][$k][2]=1;
    186.                                 break;
    187.                             case 0:
    188.                                 $xymoves[$i][$j][$k][2]=-1;
    189.                                 break;
    190.                             case 1:
    191.                                 $xymoves[$i][$j][$k][2]=0;
    192.                                 break;
    193.                         }
    194.                     }
    195.                     if(!isset($xymoves[$i][$j][$k][3])){
    196.                         $karray=($k+1)*4-1;
    197.                         $xymoves[$i][$j][$k][3]=$moves[$karray];
    198.                     }
    199.                     $y[$i][$j][$k]=$y[$i][$j][$k]+$xymoves[$i][$j][$k][3];
    200.                     if($m[$i][$j]==-1){
    201.                         switch($xymoves[$i][$j][$k][3]){
    202.                             case -1:
    203.                                 $xymoves[$i][$j][$k][3]=0;
    204.                                 break;
    205.                             case 0:
    206.                                 $xymoves[$i][$j][$k][3]=1;
    207.                                 break;
    208.                             case 1:
    209.                                 $xymoves[$i][$j][$k][3]=-1;
    210.                                 break;
    211.                         }
    212.                     }else{
    213.                         switch($xymoves[$i][$j][$k][3]){
    214.                             case -1:
    215.                                 $xymoves[$i][$j][$k][3]=1;
    216.                                 break;
    217.                             case 0:
    218.                                 $xymoves[$i][$j][$k][3]=-1;
    219.                                 break;
    220.                             case 1:
    221.                                 $xymoves[$i][$j][$k][3]=0;
    222.                                 break;
    223.                         }
    224.                     }
    225.                 }
    226.             }
    227.  
    228.  
    229.  
    230.  
    231.  
    232.  
    233. /*
    234.  
    235.             $moves=array(-1,-1,1,1,0,-1,0,1,1,-1,-1,1,-1,0,1,0,1,0,-1,0,-1,1,1,-1,0,1,0,-1,1,1,-1,-1);
    236.             for($k=0;$k<8;$k++){
    237.                 $i0=$x[$i][$j][$k];
    238.                 $j0=$y[$i][$j][$k];
    239.                 if($m[$i0][$j0]==-1){
    240.                     $karray=($k+1)*4-4;
    241.                     $x[$i][$j][$k]=$x[$i][$j][$k]+$moves[$karray];
    242.                     $karray=($k+1)*4-3;
    243.                     $y[$i][$j][$k]=$y[$i][$j][$k]+$moves[$karray];
    244.                 }else{
    245.                     $karray=($k+1)*4-2;
    246.                     $x[$i][$j][$k]=$x[$i][$j][$k]+$moves[$karray];
    247.                     $karray=($k+1)*4-1;
    248.                     $y[$i][$j][$k]=$y[$i][$j][$k]+$moves[$karray];
    249.                 }
    250.             }
    251.  
    252. */
    253.  
    254.  
    255.  
    256.  
    257.  
    258.             for($k=0;$k<9;$k++){
    259.                 if($x[$i][$j][$k]==-1){
    260.                     $x[$i][$j][$k]=$sizei-1;
    261.                 }
    262.                 if($x[$i][$j][$k]==$sizei){
    263.                     $x[$i][$j][$k]=0;
    264.                 }
    265.                 if($y[$i][$j][$k]==-1){
    266.                     $y[$i][$j][$k]=$sizej-1;
    267.                 }
    268.                 if($y[$i][$j][$k]==$sizej){
    269.                     $y[$i][$j][$k]=0;
    270.                 }
    271.             }
    272.  
    273.         }
    274.     }
    275.  
    276.  
    277.     $ti=15;
    278.     $tj=16;
    279.     $ink2=imagecolorallocate($img,255,255,255);
    280.     imagesetpixel($img,($ti*2)+$sizei*2,$tj*2,$ink2);
    281.     imagesetpixel($img,($ti*2+1)+$sizei*2,$tj*2+1,$ink2);
    282.     imagesetpixel($img,($ti*2+1)+$sizei*2,$tj*2,$ink2);
    283.     imagesetpixel($img,($ti*2)+$sizei*2,$tj*2+1,$ink2);
    284.     $tempx=$x[$ti][$tj][0];
    285.     $tempy=$y[$ti][$tj][0];
    286.     $ink3=imagecolorallocate($img,80,255,255);
    287.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2,$ink3);
    288.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2+1,$ink3);
    289.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2,$ink3);
    290.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2+1,$ink3);
    291.     $tempx=$x[$ti][$tj][1];
    292.     $tempy=$y[$ti][$tj][1];
    293.     $ink4=imagecolorallocate($img,255,80,255);
    294.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2,$ink4);
    295.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2+1,$ink4);
    296.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2,$ink4);
    297.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2+1,$ink4);
    298.     $tempx=$x[$ti][$tj][2];
    299.     $tempy=$y[$ti][$tj][2];
    300.     $ink5=imagecolorallocate($img,80,80,255);
    301.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2,$ink5);
    302.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2+1,$ink5);
    303.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2,$ink5);
    304.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2+1,$ink5);
    305.     $tempx=$x[$ti][$tj][3];
    306.     $tempy=$y[$ti][$tj][3];
    307.     $ink6=imagecolorallocate($img,255,255,80);
    308.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2,$ink6);
    309.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2+1,$ink6);
    310.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2,$ink6);
    311.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2+1,$ink6);
    312.     $tempx=$x[$ti][$tj][4];
    313.     $tempy=$y[$ti][$tj][4];
    314.     $ink7=imagecolorallocate($img,80,255,80);
    315.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2,$ink7);
    316.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2+1,$ink7);
    317.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2,$ink7);
    318.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2+1,$ink7);
    319.     $tempx=$x[$ti][$tj][5];
    320.     $tempy=$y[$ti][$tj][5];
    321.     $ink8=imagecolorallocate($img,255,80,80);
    322.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2,$ink8);
    323.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2+1,$ink8);
    324.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2,$ink8);
    325.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2+1,$ink8);
    326.     $tempx=$x[$ti][$tj][6];
    327.     $tempy=$y[$ti][$tj][6];
    328.     $ink9=imagecolorallocate($img,80,80,80);
    329.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2,$ink9);
    330.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2+1,$ink9);
    331.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2,$ink9);
    332.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2+1,$ink9);
    333.     $tempx=$x[$ti][$tj][7];
    334.     $tempy=$y[$ti][$tj][7];
    335.     $ink10=imagecolorallocate($img,0,80,160);
    336.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2,$ink10);
    337.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2+1,$ink10);
    338.     imagesetpixel($img,($tempx*2+1)+$sizei*2,$tempy*2,$ink10);
    339.     imagesetpixel($img,($tempx*2)+$sizei*2,$tempy*2+1,$ink10);
    340.  
    341.  
    342.     imagepng($img);
    343.     imagedestroy($img);
    344.  
    345.  
    346.     $wmij=fopen($mij, 'w');
    347.     $m2=serialize($m2);
    348.     fwrite($wmij, $m2);
    349.     fclose($wmij);
    350.  
    351.     $wm3ijk=fopen($m3ijk, 'w');
    352.     $m3=serialize($m3);
    353.     fwrite($wm3ijk, $m3);
    354.     fclose($wm3ijk);
    355.  
    356.     $wxij=fopen($xij, 'w');
    357.     $x=serialize($x);
    358.     fwrite($wxij, $x);
    359.     fclose($wxij);
    360.  
    361.     $wyij=fopen($yij, 'w');
    362.     $y=serialize($y);
    363.     fwrite($wyij, $y);
    364.     fclose($wyij);
    365.  
    366.  
    367.     $wxymovesij=fopen($xymovesij, 'w');
    368.     $xymoves=serialize($xymoves);
    369.     fwrite($wxymovesij, $xymoves);
    370.     fclose($wxymovesij);
    371.  
    372. ?>
    И такой вопрос, что произойдет если массивы сохранять не в файлы а в сессионные переменные?
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    чистосердечное признание xD
    А у Попова есть форум?
     
  3. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Там отклеилось.
     
  4. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    А что значит "очень и очень медленно" ?
     
  5. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    ОФФ а что хоть там за курсы-то?

    Может и мне почитать? (с) Л.И. Брежнев....
     
  6. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Значит, что если $sizei и $sizej около 100 - тогда чехлит около 10 секунд.

    Поубирал из кода все лишнее, чтобы легче читалось:

    Код (Text):
    1. <?php
    2.     include 'config.php';
    3.  
    4.     $mij='mij.txt';
    5.     $m3ijk='m3ijk.txt';
    6.     $xij='xijk.txt';
    7.     $yij='yijk.txt';
    8.     $rgbfile='rgb.txt';
    9.  
    10.     if(file_exists($mij)){
    11.         $rmij=fopen($mij, 'r');
    12.         $m=unserialize(fread($rmij,filesize($mij)));
    13.         fclose($rmij);
    14.     }
    15.  
    16.     if(file_exists($m3ijk)){
    17.         $rm3ijk=fopen($m3ijk, 'r');
    18.         $m3=unserialize(fread($rm3ijk,filesize($m3ijk)));
    19.         fclose($rm3ijk);
    20.     }
    21.  
    22.     if(file_exists($xij)){
    23.         $rxij=fopen($xij, 'r');
    24.         $x=unserialize(fread($rxij,filesize($xij)));
    25.         fclose($rxij);
    26.     }
    27.  
    28.     if(file_exists($yij)){
    29.         $ryij=fopen($yij, 'r');
    30.         $y=unserialize(fread($ryij,filesize($yij)));
    31.         fclose($ryij);
    32.     }
    33.  
    34.     header ("Content-type: image/png");
    35.     $img = imagecreatetruecolor($sizei, $sizej);
    36.  
    37.     for($i=0;$i<$sizei;$i++){
    38.         for($j=0;$j<$sizej;$j++){
    39.  
    40.             $m2[$i][$j]=0;
    41.             for($k=0;$k<8;$k++){
    42.                 if(!isset($x[$i][$j][$k])){
    43.                     $x[$i][$j][$k]=$i;
    44.                     $y[$i][$j][$k]=$j;
    45.                 }
    46.                 $i0=$x[$i][$j][$k];
    47.                 $j0=$y[$i][$j][$k];
    48.                 $m2[$i][$j]=$m2[$i][$j]+$m[$i0][$j0];
    49.             }
    50.  
    51.             for($k=0;$k<9;$k++){
    52.                 if ($m[$i][$j]!=-1){
    53.                     $k3=$k+9;
    54.                 }else{
    55.                     $k3=$k;
    56.                 }
    57.                 $k2=($k-4)*2;
    58.                 switch($m2[$i][$j]){
    59.                     case $k2:  
    60.                         if(isset($m3[$i][$j][$k3])){
    61.                             $m2[$i][$j]=$m3[$i][$j][$k3];
    62.                             $m3[$i][$j][$k3]=$m3[$i][$j][$k3]*-1;
    63.                         }else{
    64.                             $m3[$i][$j][$k3]=1;
    65.                             $m2[$i][$j]=$m3[$i][$j][$k3];
    66.                         }
    67.                         break;
    68.                 }
    69.             }
    70.            
    71. //***************************** Графика *****************************
    72.             if($m[$i][$j]>0) {
    73.                 $r=255;
    74.                 $g=255;
    75.                 $b=255;
    76.             } else {
    77.                 $r=0;
    78.                 $g=0;
    79.                 $b=0;
    80.             }
    81.        
    82.             $ink=imagecolorallocate($img,$r,$g,$b);
    83.             imagesetpixel($img,$i,$j,$ink);
    84. //***************************** Графика *****************************
    85.  
    86.             $moves=array(-1,-1,1,1,0,-1,0,1,1,-1,-1,1,-1,0,1,0,1,0,-1,0,-1,1,1,-1,0,1,0,-1,1,1,-1,-1);
    87.             for($k=0;$k<8;$k++){
    88.                 $i0=$x[$i][$j][$k];
    89.                 $j0=$y[$i][$j][$k];
    90.                 if($m[$i0][$j0]==-1){
    91.                     $karray=($k+1)*4-4;
    92.                     $x[$i][$j][$k]=$x[$i][$j][$k]+$moves[$karray];
    93.                     $karray=($k+1)*4-3;
    94.                     $y[$i][$j][$k]=$y[$i][$j][$k]+$moves[$karray];
    95.                 }else{
    96.                     $karray=($k+1)*4-2;
    97.                     $x[$i][$j][$k]=$x[$i][$j][$k]+$moves[$karray];
    98.                     $karray=($k+1)*4-1;
    99.                     $y[$i][$j][$k]=$y[$i][$j][$k]+$moves[$karray];
    100.                 }
    101.             }
    102.  
    103.             for($k=0;$k<9;$k++){
    104.                 if($x[$i][$j][$k]==-1){
    105.                     $x[$i][$j][$k]=$sizei-1;
    106.                 }
    107.                 if($x[$i][$j][$k]==$sizei){
    108.                     $x[$i][$j][$k]=0;
    109.                 }
    110.                 if($y[$i][$j][$k]==-1){
    111.                     $y[$i][$j][$k]=$sizej-1;
    112.                 }
    113.                 if($y[$i][$j][$k]==$sizej){
    114.                     $y[$i][$j][$k]=0;
    115.                 }
    116.             }
    117.  
    118.         }
    119.     }
    120.     imagepng($img);
    121.     imagedestroy($img);
    122.  
    123.     $mij='mij.txt';
    124.     $m3ijk='m3ijk.txt';
    125.     $xij='xijk.txt';
    126.     $yij='yijk.txt';
    127.  
    128.     $wmij=fopen($mij, 'w');
    129.     $m2=serialize($m2);
    130.     fwrite($wmij, $m2);
    131.     fclose($wmij);
    132.  
    133.     $wm3ijk=fopen($m3ijk, 'w');
    134.     $m3=serialize($m3);
    135.     fwrite($wm3ijk, $m3);
    136.     fclose($wm3ijk);
    137.  
    138.     $wxij=fopen($xij, 'w');
    139.     $x=serialize($x);
    140.     fwrite($wxij, $x);
    141.     fclose($wxij);
    142.  
    143.     $wyij=fopen($yij, 'w');
    144.     $y=serialize($y);
    145.     fwrite($wyij, $y);
    146.     fclose($wyij);
    147. ?>
    Добавлено спустя 4 минуты 38 секунд:
    Я вот думаю, может это от того, что я в качестве индексов двумерного массива использую трехмерные массивы?
    Код (Text):
    1.  
    2.             $i0=$x[$i][$j][$k];
    3.             $j0=$y[$i][$j][$k];
    4.             $m2[$i][$j]=$m2[$i][$j]+$m[$i0][$j0];
    Или может это из-за функции unserialize? Или из-за графики... Короче не знаю, на C++ у меня шустро работало, а в php чехлит.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Чехлит!..
     
  8. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    fixed
     
  9. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Где-то здесь была тема для вашего случая. Сам Попова не смотрел (не выдержал его гнусавого монотонного голоса более 12 секунд), но по качеству кода его подаванов могу судить о качестве курса.
    В общем читайте книги умные и php.net. Или курсы качественные используйте.
    Аминь
     
  10. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Суть скрипта в чем. Есть клеточный автомат $sizei*$sizej клеточек. Правила взаимодействий между клеточками устанавливаются динамически, в зависимости от состояния системы. Количество клеточек, с которыми взаимодействует выбранная клеточка - тоже динамическое число. Координаты окружающих клеточек, опять же... Но не в этом дело.
    Есть динамическая система, которая пытается побороть внутреннюю энтропию самой себя, и тем самым обучается...
    А, впрочем, я отвлекся от основного вопроса. Где подкрутить надо, чтобы не так тормозило? [​IMG]
     
  11. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    *facepalm*
    Вы делаете вещи явно не те, для которых предназначен РНР. Еще и оптимизировать это пытаетесь.
    Для быстрой скорости вашего алгоритма используйте Python или Ruby.
    Для более быстрой скорости используйте C (C#/ C++/ Objective C).
    Для мега-скорости - Assembler.
    НО не РНР!
     
  12. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Короче ты не понял. В чем главная проблема моей программы - в том, что если сделать координаты "окружающих клеточек" - динамическими, тогда теряется симметрия всей системы. Но тут опять-же, если мы зададим периодические граничные условия для каждой "окружающей клеточки", и ПРАВИЛЬНО подберем правила по которым меняются координаты этих клеточек - тогда симметрия восстанавливается.
    Фактически, с периодическими граничными условиями, наш клеточный автомат находится не в двухмерном пространстве, и даже не в трехмерном, а в пространстве Римана. С точки зрения топологии, поверхность нашего автомата, является четырехмерным тороидом!

    [​IMG]

    Добавлено спустя 20 минут 9 секунд:
    Я пробовал на C++ делать, но там меня компилятор выбрасывал куда-то в дизасемблер, еще на этапе компиляции. Вобщем не может он хранить в памяти мои 8-ми мерные массивы... Конечно можно там что-то с указателями, динамическая память и т.д. придумать... но куда мне с тремя неоконченными высшими в указатели лезть...
    Короче суть в чем. Любой клеточный автомат, с детерминированными правилами поведения между клеточками, рано или поздно приходить в состояние "зацыкливания". Это или состояние, когда он никак не меняется, или состояние, когда он переходит от одного состояния в другое, при этом количество состояний ограничено. Так вот, на любой внешний раздражитель, можно найти такое "детерминированное" состояние автомата. Фактически это будет "сущность" того или иного раздражителя на определенном... хм... поле.
    Так вот с помощью этих... хм... полей, или даже так сказать "карт" самоорганизаций, мы сможем обучить нашу программу взаимодействовать с внешними раздражителями.

    Добавлено спустя 1 минуту 19 секунд:
    Вобщем у Попова нет ни слова по этому поводу. [​IMG]
     
  13. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Делайте на С, РНР написан на С, так что он точно умеет
     
  14. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Но я хочу делать под web! Чтобы любой рандомный пользователь смог взаимодействовать с моей "нейронной сетью".
     
  15. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Для этого существуют нормальные способы. "Труъ" программисты РНР даже за язык программирования не считают, и отчасти они правы. Вы уже даже догадываетесь почему.
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пхп читает и пишет в стандартные потоки ввода и вывода. тыможешь свою логикуи графику писать на любом языке. можешь работать в свящке с пхп. можешь обойтись и без него.