Exemplo n.º 1
0
    private void Update()
    {
        // Time.realtimeSinceStartup : 게임이 시작된 시간으로부터 경과한 실제 시간을 나타냅니다.
        float startTime = Time.realtimeSinceStartup;

        if (useJobs)
        {
            NativeArray <float3> positionArray = new NativeArray <float3>(sphereList.Count, Allocator.TempJob);
            NativeArray <float>  moveYArray    = new NativeArray <float>(sphereList.Count, Allocator.TempJob);

            // List 내 위치와 moveY 저장
            for (int i = 0; i < sphereList.Count; i++)
            {
                positionArray[i] = sphereList[i].transform.position;
                moveYArray[i]    = sphereList[i].moveY;
            }
            ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob
            {
                deltaTime     = Time.deltaTime,
                positionArray = positionArray,
                moveYArray    = moveYArray,
            };

            JobHandle jobHandle = reallyToughParallelJob.Schedule(sphereList.Count, 100);
            // 모든 스레드의 job이 완료될 때 까지 기다림
            jobHandle.Complete();

            for (int i = 0; i < sphereList.Count; i++)
            {
                sphereList[i].transform.position = positionArray[i];
                sphereList[i].moveY = moveYArray[i];
            }

            positionArray.Dispose();
            moveYArray.Dispose();
        }
        else
        {
            foreach (SphereT sphere in sphereList)
            {
                sphere.transform.position += new Vector3(0, sphere.moveY * Time.deltaTime);

                if (sphere.transform.position.y > 5f)
                {
                    sphere.moveY = -math.abs(sphere.moveY);
                }
                if (sphere.transform.position.y < -5f)
                {
                    sphere.moveY = +math.abs(sphere.moveY);
                }
                float value = 0f;
                for (int i = 0; i < 5000; i++)
                {
                    value = math.exp10(math.sqrt(value));
                }
            }
        }
        // 1 Update 경과 시간 (ms)
        Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + "ms");
    }
Exemplo n.º 2
0
        public void UpdateAgentDecision()
        {
            NativeArray <float> x = new NativeArray <float>(currentAgents.Count, Allocator.TempJob);
            NativeArray <float> y = new NativeArray <float>(currentAgents.Count, Allocator.TempJob);
            NativeArray <float> z = new NativeArray <float>(currentAgents.Count, Allocator.TempJob);

            ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob
            {
                x = x,
                y = y,
                z = z
            };

            JobHandle jobHandle = reallyToughParallelJob.Schedule(currentAgents.Count, 20);

            jobHandle.Complete();

            // update agent's decision

            for (int i = 0; i < currentAgents.Count; i++)
            {
                currentAgents[i].DecideActionPostProcessing(new float[3] {
                    x[i], y[i], z[i]
                });
            }

            x.Dispose();
            y.Dispose();
            z.Dispose();
        }
    private void Update_2()
    {
        float startTime = Time.realtimeSinceStartup;

        if (useJobs)
        {
            //Duplicate pieces of data. If we did this efficiently, only create these 1x.
            NativeArray <float3> positionArray = new NativeArray <float3>(sunsList.Count, Allocator.TempJob);
            NativeArray <float>  moveYarray    = new NativeArray <float>(sunsList.Count, Allocator.TempJob);

            for (int i = 0; i < sunsList.Count; i++)
            {
                positionArray[i] = sunsList[i].transform.position;
                moveYarray[i]    = sunsList[i].moveY;
            }

            ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob
            {
                deltaTime     = Time.deltaTime,
                positionArray = positionArray,
                moveYarray    = moveYarray,
            };

            JobHandle jobHandle = reallyToughParallelJob.Schedule(sunsList.Count, 100);
            jobHandle.Complete();

            for (int i = 0; i < sunsList.Count; i++)
            {
                sunsList[i].transform.position = positionArray[i];
                sunsList[i].moveY = moveYarray[i];
            }

            positionArray.Dispose();
            moveYarray.Dispose();
        }
        else
        {
            foreach (Sun sun in sunsList)
            {
                sun.transform.position += new Vector3(0, sun.moveY * Time.deltaTime);
                if (sun.transform.position.y > 5f)
                {
                    sun.moveY = -math.abs(sun.moveY);
                }
                else if (sun.transform.position.y < -5f)
                {
                    sun.moveY = math.abs(sun.moveY);
                }
                Testing.ReallyToughTask(1000);
            }
        }

        //Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + "ms");
    }
Exemplo n.º 4
0
    // Update is called once per frame
    private void Update()
    {
        var startTime = Time.realtimeSinceStartup;

        if (_useJobs)
        {
            // Обрабатываем данные на куче джобов
            var posArray  = new NativeArray <float3>(_zombieList.Count, Allocator.TempJob);
            var moveArray = new NativeArray <float>(_zombieList.Count, Allocator.TempJob);

            for (var i = 0; i < _zombieList.Count; i++)
            {
                posArray[i]  = _zombieList[i].Transform.position;
                moveArray[i] = _zombieList[i].MoveY;
            }

            var paralelJob = new ReallyToughParallelJob
            {
                DeltaTime     = Time.deltaTime,
                PositionArray = posArray,
                MoveYArray    = moveArray
            };

            var handle = paralelJob.Schedule(_zombieList.Count, 100);
            handle.Complete();

            // Применяем данные к GO
            for (var i = 0; i < _zombieList.Count; i++)
            {
                _zombieList[i].Transform.position = posArray[i];
                _zombieList[i].MoveY = moveArray[i];
            }

            posArray.Dispose();
            moveArray.Dispose();
        }
        else
        {
            foreach (var zombie in _zombieList)
            {
                zombie.Transform.position += new Vector3(0, zombie.MoveY * Time.deltaTime);

                if (zombie.Transform.position.y > 5f)
                {
                    zombie.MoveY = -math.abs(zombie.MoveY);
                }

                if (zombie.Transform.position.y < -5f)
                {
                    zombie.MoveY = +math.abs(zombie.MoveY);
                }
            }
        }

        if (_useJobs)
        {
            var jobHandles = new NativeList <JobHandle>(Allocator.Temp);

            for (int i = 0; i < 10; i++)
            {
                var handle = JobTest();
                jobHandles.Add(handle);
            }

            JobHandle.CompleteAll(jobHandles);
            jobHandles.Dispose();
        }
        else
        {
            for (int i = 0; i < 10; i++)
            {
                ReallyToughTask();
            }
        }

        Debug.Log((Time.realtimeSinceStartup - startTime) * 1000 + " ms");
    }
Exemplo n.º 5
0
    private void Update()
    {
        float startTime = Time.realtimeSinceStartup;

        if (useJobs1)
        {
            NativeArray <float3> positionArray = new NativeArray <float3>(cubeList.Count, Allocator.TempJob);
            NativeArray <float>  moveYArray    = new NativeArray <float>(cubeList.Count, Allocator.TempJob);

            for (int i = 0; i < cubeList.Count; i++)
            {
                positionArray[i] = cubeList[i].transform.position;
                moveYArray[i]    = cubeList[i].moveY;
            }

            ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob
            {
                deltaTime     = Time.deltaTime,
                positionArray = positionArray,
                moveYArray    = moveYArray
            };

            JobHandle jobHandle = reallyToughParallelJob.Schedule(cubeList.Count, 100);
            jobHandle.Complete();

            for (int i = 0; i < cubeList.Count; i++)
            {
                cubeList[i].transform.position = positionArray[i];
                cubeList[i].moveY = moveYArray[i];
            }
            positionArray.Dispose();
            moveYArray.Dispose();
        }
        else if (useJobs2)
        {
            TransformAccessArray transformAccessArray = new TransformAccessArray(cubeList.Count);
            NativeArray <float>  moveYArray           = new NativeArray <float>(cubeList.Count, Allocator.TempJob);

            for (int i = 0; i < cubeList.Count; i++)
            {
                transformAccessArray.Add(cubeList[i].transform);
                moveYArray[i] = cubeList[i].moveY;
            }

            ReallyToughParallelJobTransforms reallyToughParallelJobTransforms = new ReallyToughParallelJobTransforms
            {
                deltaTime  = Time.deltaTime,
                moveYArray = moveYArray
            };
            JobHandle jobHandle = reallyToughParallelJobTransforms.Schedule(transformAccessArray);
            jobHandle.Complete();

            for (int i = 0; i < cubeList.Count; i++)
            {
                cubeList[i].moveY = moveYArray[i];
            }
            transformAccessArray.Dispose();
            moveYArray.Dispose();
        }
        else
        {
            foreach (Cube cube in cubeList)
            {
                cube.transform.position += new Vector3(0, cube.moveY * Time.deltaTime);
                if (cube.transform.position.y > 5f)
                {
                    cube.moveY = -math.abs(cube.moveY);
                }
                if (cube.transform.position.y < -5f)
                {
                    cube.moveY = +math.abs(cube.moveY);
                }

                float value = 0f;
                for (int i = 0; i < 1000; i++)
                {
                    value = math.exp10(math.sqrt(value));
                }
            }
        }
        Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + "ms");
    }
Exemplo n.º 6
0
    private void Update()
    {
        float startTime = Time.realtimeSinceStartup;

        if (useJobs)
        {
            NativeArray <float3> positionArray = new NativeArray <float3>(cSpriteList.Count, Allocator.TempJob);
            NativeArray <float>  moveYArray    = new NativeArray <float>(cSpriteList.Count, Allocator.TempJob);

            for (int i = 0; i < cSpriteList.Count; i++)
            {
                positionArray[i] = cSpriteList[i].transform.position;
                moveYArray[i]    = cSpriteList[i].moveY;
            }

            ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob
            {
                deltaTime     = Time.deltaTime,
                positionArray = positionArray,
                moveYArray    = moveYArray
            };

            JobHandle jobHandle = reallyToughParallelJob.Schedule(cSpriteList.Count, 100);
            jobHandle.Complete();

            for (int i = 0; i < cSpriteList.Count; i++)
            {
                cSpriteList[i].transform.position = positionArray[i];
                cSpriteList[i].moveY = moveYArray[i];
            }
            positionArray.Dispose();
            moveYArray.Dispose();
        }


        else
        {
            foreach (CSprite csprite in cSpriteList)
            {
                csprite.transform.position += new Vector3(0, csprite.moveY * Time.deltaTime);

                if (csprite.transform.position.y > 5f)
                {
                    csprite.moveY = -math.abs(csprite.moveY);
                }
                if (csprite.transform.position.y < -5f)
                {
                    csprite.moveY = math.abs(csprite.moveY);
                }
                float value = 0f;
                for (int i = 0; i < 1000; i++)
                {
                    value = math.exp10(math.sqrt(value));
                }
            }
        }

        /*
         * if (useJobs) {
         *  NativeList<JobHandle> jobHandleList = new NativeList<JobHandle>(Allocator.Temp);
         *  for(int i = 0; i < 10; i++)
         *  {
         *      JobHandle jobHandle = ReallyToughTaskJob();
         *      jobHandleList.Add(jobHandle);
         *  }
         *  JobHandle.CompleteAll(jobHandleList);
         *  jobHandleList.Dispose();
         * } else {
         *  for (int i = 0; i < 10; i++)
         *  {
         *      ReallyToughTask();
         *  }
         *
         * };
         *
         */


        Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + "ms");
    }
Exemplo n.º 7
0
    private void Update()
    {
        float startTime = Time.realtimeSinceStartup;

        if (useJob)
        {
            NativeArray <float3> positionArray = new NativeArray <float3>(zombieList.Count, Allocator.TempJob);
            NativeArray <float>  MoveYArray    = new NativeArray <float>(zombieList.Count, Allocator.TempJob);
            //TransformAccessArray transformAccessArray = new TransformAccessArray(zombieList.Count);

            for (int i = 0; i < zombieList.Count; i++)
            {
                positionArray[i] = zombieList[i].transform.position;
                MoveYArray[i]    = zombieList[i].moveY;
                //transformAccessArray.Add(zombieList[i].transform);
            }

            ReallyToughParallelJob reallyToughParallelJob = new ReallyToughParallelJob {
                deltaTime = Time.deltaTime, moveYArray = MoveYArray, positionArray = positionArray
            };

            JobHandle jobHandle = reallyToughParallelJob.Schedule(zombieList.Count, 100);
            jobHandle.Complete();


            /*ReallyToughParallelJobTransforms reallyToughParallelJobTransforms = new ReallyToughParallelJobTransforms { deltaTime = Time.deltaTime, moveYArray = MoveYArray };
             *
             * JobHandle jobHandle = reallyToughParallelJobTransforms.Schedule(transformAccessArray);
             * jobHandle.Complete();*/


            for (int i = 0; i < zombieList.Count; i++)
            {
                zombieList[i].transform.position = positionArray[i];
                zombieList[i].moveY = MoveYArray[i];
            }

            positionArray.Dispose();
            MoveYArray.Dispose();
            //transformAccessArray.Dispose();
        }
        else
        {
            for (int i = 0; i < zombieList.Count; i++)
            {
                zombieList[i].transform.position += new Vector3(0, zombieList[i].moveY * Time.deltaTime);

                if (zombieList[i].transform.position.y > 5f)
                {
                    zombieList[i].moveY = -math.abs(zombieList[i].moveY);
                }

                if (zombieList[i].transform.position.y < -5f)
                {
                    zombieList[i].moveY = +math.abs(zombieList[i].moveY);
                }

                float value = 0f;
                for (int k = 0; k < 1000; k++)
                {
                    value = math.exp10(math.sqrt(value));
                }
            }
        }



        /*
         * NativeList<JobHandle> jobHandleList = new NativeList<JobHandle>(Allocator.Temp);
         *
         * if (useJob)
         * {
         *  for (int i = 0; i < 10; i++)
         *  {
         *      JobHandle jobHandle = ReallyToughTaskJob();
         *      jobHandleList.Add(jobHandle);
         *  }
         *  JobHandle.CompleteAll(jobHandleList);
         *  jobHandleList.Dispose();
         * }
         * else
         * {
         *  for (int i = 0; i < 10; i++)
         *  {
         *      ReallyToughTask();
         *  }
         * }
         */

        Debug.Log(((Time.realtimeSinceStartup - startTime) * 1000f) + " ms");
    }