Most popular

วันพฤหัสบดีที่ 29 กันยายน พ.ศ. 2554

การรันคำสั่งด้วย Parallel ใน .net 4


ซึ่งใน .net 4 จะมี library ที่ชื่อ System.Threading.Tasks ให้เราใช้ในการจัดการกับ Task หรือคำสั่งต่างๆ เช่นเราต้องการจัดการกับเมธอดหลายๆ
 เมธอดเพื่อให้ทำงานพร้อมกัน(Concurrency) เช่นมีเมธอด

 A,B,C เราก็ใช้
Parallel.Invoke(A,B,C);
 หรือ
 Parallel.Invoke(()=>A(),
 ()=>B(),
 ()=>C()
 );

 ตัวอย่างการใช้งาน Parallel.Invoke เริ่มแรกให้เราทำการ using System.Threading.Tasks ก่อนแล้วเขียนคำสั่งต่างๆดังนี้

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication22
{
    class Program
    {
        static void Main(string[] args)
        {
            Parallel.Invoke(
                () => A(),
                () => B(),
                () => C()
                    );
            Console.ReadLine();
        }
        static void A()
        {
            Console.WriteLine("A");
        }
        static void B()
        {
            Console.WriteLine("B");
        }
        static void C()
        {
            Console.WriteLine("C");
        }
    }
}


 ซึ่งผลลัพธ์เราจะได้
 A
 B
 C
 ในตัวอย่างนี้จะเป็นการสั่งให้โปรแกรมทำการเรียกใช้เมธอดทั้งสามพร้อมๆกัน ซึ่งถ้าเรามีเมธอดมากกว่านี้เราก็สามารถเรียกใช้ได้เหมือนกับการเรียกเมธอดในตัวอย่างนี้

ถึงแม้ว่าจะมีการเรียกใช้เมธอดให้เริ่มต้นทำงานพร้อมกันในแบบ Concurrency ก็ตามแต่เวลาที่ใช้ในการทำงานตามคำสั่งข้างในเมธอดแต่ละเมธอดจะไม่เท่ากันซึ่งเราสามารถ
 วัดเวลาในการทำงานได้โดยใช้ Stopwatch ดังนี้

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Threading;
namespace ConsoleApplication22
{
    class Program
    {
        static void Main(string[] args)
        {
            Parallel.Invoke(
                () => A(),
                () => B(),
                () => C()
                    );
            Console.ReadLine();
        }
        static void A()
        {
            var watch = Stopwatch.StartNew();
            Console.WriteLine("A");
            Console.WriteLine("elapsed time of A is " + watch.Elapsed.TotalSeconds);
        }
        static void B()
        {
            var watch = Stopwatch.StartNew();
            Console.WriteLine("B");
            Console.WriteLine("elapsed time of B is " + watch.Elapsed.TotalSeconds);
        }
        static void C()
        {
            var watch = Stopwatch.StartNew();
            Console.WriteLine("C");
            Console.WriteLine("elapsed time of C is " + watch.Elapsed.TotalSeconds);
        }
    }
}

ซึ่งผลลัพธ์เราจะได้ดังรูป



จากรูปที่ 1 ถ้าเราเพิ่ม Thread.Sleep เข้าไปที่เมธอด B โดยให้ทำการ sleep เป็นเวลา 4 วิ ผลลัพธ์ที่ได้เราจะเห็นเวลาที่เมธอด B ทำงานตั้งแต่เริ่มต้น
 ถึงสิ้นสุดนานกว่าเมธอดอื่นที่ไม่ได้ใช้ Thread.Sleep และจะทำงานเสร็จสิ้นเป็นเมธอดสุดท้ายด้วยดังนี้

         static void B()
         {
             var watch = Stopwatch.StartNew();
             Thread.Sleep(4000);
             Console.WriteLine("B");
             Console.WriteLine("elapsed time of B is " + watch.Elapsed.TotalSeconds);
         }

 ผลลัพธ์เราจะได้ดังรูป




ซึ่งจากตัวอย่างนี้เราจะเห็นว่าถึงแม้เริ่มต้นทำงานพร้อมกันแต่ระยะเวลาหรือความเร็วในการประมวลผลคำสั่งแต่ละเมธอดจะไม่เท่ากันขึ้นอยู่กับราย
 ละเอียดภายในเมธอดว่ามีมากน้อยเพียงใดซึ่งถ้าเราเห็นว่าเมธอดไหนทำงานช้ามากเราก็สามารถแบ่งการทำงานของเมธอดนั้นออกเป็น parallel หรือสั่งให้ทำงานแบบคู่ขนานได้
 ซึ่งจะทำให้เมธอดนั้นๆใช้เวลาที่น้อยลงหรือมีการทำงานที่เร็วขึ้น

การใช้ Task
  ก่อนหน้านี้เราได้ใช้ Parallel.Invokeในการเรียกเมธอดทำงานพร้อมๆกัน ซึ่งในส่วนนี้จะมีอีกวิธีที่สามารถสั่งให้โปรแกรมทำงานพร้อมๆกันด้วยคลาสที่ชื่อ Task
 ซึ่งในการใช้ Task นั้นไม่ยุ่งยากโดยถ้าเรามีหลายๆเมธอดแล้วต้องการให้เมธอดเหล่านี้เริ่มทำงานพร้อมๆกัน เราสามารถแบ่งการทำงานของเมธอดออกเป็น Task แต่ละ Task
 ไปได้ เช่นมี 3 เมธอดคือ A,B,C ถ้าต้องการแบ่งเป็น Task เราก็เขียนได้ดังนี้

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Threading;
namespace ConsoleApplication22
{
    class Program
    {
        static void Main(string[] args)
        {
            var t1 = new Task(()=>A());
            var t2 = new Task(() => B());
            var t3 = new Task(() => C());
            t1.Start();
            t2.Start();
            t3.Start();
            Task.WaitAll(t1, t2, t3);
            Console.WriteLine("Finished all Tasks");
            Console.ReadLine();
           
        }
        static void A()
        {
            var watch = Stopwatch.StartNew();
            Console.WriteLine("A");
            Console.WriteLine("elapsed time of A is " + watch.Elapsed.TotalSeconds);
        }
        static void B()
        {
            var watch = Stopwatch.StartNew();
            Console.WriteLine("B");
            Console.WriteLine("elapsed time of B is " + watch.Elapsed.TotalSeconds);
        }
        static void C()
        {
            var watch = Stopwatch.StartNew();
            Console.WriteLine("C");
            Console.WriteLine("elapsed time of C is " + watch.Elapsed.TotalSeconds);
        }
    }
}

ในตัวอย่างนี้เริ่มแรกให้เราสร้าง Task ขึ้นมาก่อนโดยภายใน Task ก็จะมีการกำหนดเมธอดที่ต้องการใช้งาน Task จากนั้นเรียกคำสั่ง Start เพื่อทำการสั่งให้เริ่มทำงาน Task
 จากนั้นจะมีคำสั่ง WaitAll เพื่อรอให้ทุก Task ทำงานเสร็จก่อนแล้วถึงจะทำการแสดงค่า Finished  all Tasks
 ซึ่งตรง WaitAll นี้เราสามารถกำหนดเวลาเพื่อให้โปรแกรมทำการรอได้เช่นถ้าการทำงานของ Task ทุก Task เกินเวลาที่กำหนดไว้ก็อาจจะให้แจ้งเตือนขึ้นมาว่า
 Task ที่ทำงานนั้นใช้เวลาเกินกว่าทีกำหนด ซึ่งให้เขียนดังนี้
        static void Main(string[] args)
        {
            var t1 = new Task(()=>A());
            var t2 = new Task(() => B());
            var t3 = new Task(() => C());
            t1.Start();
            t2.Start();
            t3.Start();
            if (!Task.WaitAll(new Task[] { t1, t2, t3 }, 4000))
            {
                Console.WriteLine("elapsed time > 4000 ms");
            }
            Console.WriteLine("Finished all Tasks");
            Console.ReadLine();
           
        }

ซึ่งในตัวอย่างนี้ถ้าเรารันโปรแกรมเราจะยังไม่เป็นคำสั่งในส่วนของ Console.WriteLine("elapsed time > 4000 ms");
 เนื่องจากว่าทุก Task ใช้เวลาน้อยกว่า 4000 ms  แต่ถ้าเราเพิ่ม Thread.Sleep ในเมธอดใดเมธอดหนึ่งให้ทำการ Sleep เป็นเวลา 5000 ms เช่นเพิ่ม
 ตรงเมธอด A ดังนี้
 
        static void A()
        {
            var watch = Stopwatch.StartNew();
            Thread.Sleep(5000);
            Console.WriteLine("A");
            Console.WriteLine("elapsed time of A is " + watch.Elapsed.TotalSeconds);
        }

ผลลัพธ์ที่ได้เราจะได้ดังรูป






ที่มา : คุณ paedotnet http://www.codetoday.net/default.aspx?g=posts&t=2945

วันอังคารที่ 27 กันยายน พ.ศ. 2554

ปัญหาการใช้ inserted,deleted ในการสร้าง Trigger (SQL Server 2000)

ปัญหานี้จะเกิดกับ Query ที่อยู่ใน Trigger ที่ไม่รู้จักกับ inserted หรือ deleted
Key Word 2 ตัวนี้มีความหมายคือ
  • INSERTED ก็คือข้อมูลปัจจุบันที่เพิ่งนำเข้ามาใน Table
  • DELETED ก็คือข้อมูลที่เพิ่งจะลบออกไป หรือเมื่อมีความต้องการที่จะลบ
ตัวอย่าง Query เจ้าปัญหา
DELETE FROM TABLE WHERE (TABLE_ID = deleted.ID

เมื่อต้องการจะ Execute จะเกิดปัญหาคือ การมองว่า inserted หรือ deleted เป็น Table หนึ่ง ที่ไม่มีอยู่จริง
"The column prefix 'deleted' does not match with a table name or alias name used in the query." 

การแก้ไขคือประกาศตัวแปรมารับค่าของข้อมูลที่ต้องการใช้งานจาก inserted หรือ deleted ก่อน เช่น

//ประกาศตัวแปรมารับค่าจาก Field
DECLARE @number char(4) , @open_id char(11)
//เอาตัวแปรไปรับค่าเก็บไว้ เพื่อใช้งานใน Query หลังจากนี้
SELECT @number=NUMBER,@open_id=OPEN_ID FROM deleted 

Code ด้านล่างนี้เป็นตัวอย่างการสร้าง trigger ให้ VIEW สามารถลบข้อมูลได้

CREATE TRIGGER delFormNum
ON dbo.VIEW_TKRNUMBERSTK
INSTEAD OF DELETE
AS
BEGIN
      DECLARE @number char(4) , @open_id char(11)

      SELECT @number=NUMBER,@open_id=OPEN_ID FROM deleted

      DELETE FROM TKR_OPENRECEIPTDTL
      WHERE (NUMBER = 
@number) AND (RECEIPT_CODE IS NULL);

      DELETE FROM TKR_OPENRECEIPT
      WHERE (OPEN_ID = @open_Id);

      COMMIT

END
GO 

วันจันทร์ที่ 26 กันยายน พ.ศ. 2554

GPU (Graphics Processing unit) ตัวประมวลผลของการ์ดจอ

Display Adapter ที่เรียกกันติดปากว่าการ์ดจอ หรือการ์แสดงผล
Graphics Processing unit (GPU) สามารถเรียกอีกชื่อหนึ่งได้คือ visual processing unit (VPU) ซึ่ง GPU มีได้ทั้งที่เป็น การ์ด หรือเป็นส่วนหนึ่งของแผงเมนบอร์ดก็ได้แต่ในปัจจุบันการ์ดแสดงผลส่วนใหญ่อยู่ในรูปของการ์ด หน้าที่หลักของ GPU ก็คือช่วยในการประมวลการทำงานในด้านภาพกราฟฟิกบนหน้าจอคอมพิวเตอร์ให้มีประสิทธิภาพมากยิ่งขึ้นหลักการทำงานก็คล้ายกับ CPU แต่จะแตกต่างกันตรงที่ การ์ดแสดงผลสมัยเก่า ทำหน้าที่แปลงข้อมูลดิจิตอลเป็นสัญญาณเท่านั้น แต่จากกระแสความนิยมของการ์ดเร่งความเร็วสามมิติ ในช่วงครึ่งหลังของทศวรรษที่ 90 โดยบริษัท 3dfx และ nVidia ทำให้เทคโนโลยีด้านสามมิติพัฒนาไปมาก ปัจจุบันการ์ดแสดงผลสมัยใหม่ได้รวมความสามารถในการแสดงผลภาพสามมิติมาไว้เป็นมาตรฐาน และได้เรียกชื่อใหม่ว่า GRAPHICS PROCESSING UNIT โดยสามารถลดงานด้านการแสดงผลของของหน่วยประมวลผลกลาง (CPU) ได้มาก
GPU ATI

อย่างไรก็ตามวงจรแสดงผลเหล่านี้มักมีความสามารถด้านสามมิติค่อนข้างจำกัด แต่ก็เหมาะสมกับงานในสำนักงาน, workstation(สถานีงานเป็นคำที่ใช้อธิบายสมรรถนะอันยิ่งใหญ่ของไมโครคอมพิวเตอร์ ที่สามารถทำงานพร้อมกันได้หลายงาน (multitasking) ส่วนมากจะใช้ในเรื่องของการออกแบบ (CAD) นั่นก็หมายถึงว่า สถานีงานนี้จะต้องมีหน่วยความจำขนาดใหญ่ มีหน่วยเก็บข้อมูลขนาดพิเศษ มีตัวปรับภาพชั้นยอด มีจอภาพชั้นหนึ่ง และที่สำคัญคือมีตัวประมวลผลที่ทำงานได้เร็วมาก ๆ เช่น RISC ส่วนใหญ่ สถานีงานจะใช้ระบบปฏิบัติการยูนิกซ์ (UNIX) และ โอเอส/ทู (OS/2) มีบางแห่งที่ใช้เครื่องแมคอินทอชชนิดที่มีประสิทธิภาพในการทำงานสูง ๆ อย่างไรก็ตาม ในอีกความหมายหนึ่ง สถานีงานอาจหมายถึงเพียงไมโครคอมพิวเตอร์แต่ละตัวในระบบเครือข่าย), GAME CONSOLE เป็นต้น
GPU NVIDIA


สำหรับผู้ที่ต้องการความสามารถด้านภาพสามมิติประสิทธิภาพสูง เช่น ใช้เพื่อเล่นเกมคอมพิวเตอร์ ฮาร์ดแวร์ยังอยู่ในรูปของการ์ดที่ต้องเสียบเพิ่มเพื่อให้ได้ภาพเคลื่อนไหวที่เป็นสามมิติที่สมจริง ในทางกลับกัน การใช้งานบางประเภท เช่น งานทางการแพทย์ กลับต้องการความสามารถการแสดงภาพสองมิติที่สูงแทนที่จะเป็นแบบสามมิติ เดิมการ์ดแสดงผลแบบสามมิติอยู่แยกกันคนละการ์ดกับการ์ดแบบสองมิติและต้องมีการต่อสายเชื่อมถึงกัน เช่น การ์ด Voodoo ของบริษัท 3dfx ซึ่งปัจจุบันไม่มีแล้ว

ตำแหน่งของ GPU On board




ที่มา : http://forum.dekitclub.com/index.php/topic,1623.0.html 

วันศุกร์ที่ 16 กันยายน พ.ศ. 2554

ทำให้ Windows 32 bit เห็น Ram มากกว่า 4 GB

ปัญหาของวินโดว์ส 32 บิตที่มองเห็นหน่วยความจำ 4GB (หรือมากกว่า) ไม่เต็มความจุ
กำลังจะหมดไปด้วยเทคนิค PAE และวิธีย้ายตำแหน่งอ้างอิง

เหตุใด? ระบบปฏิบัติการ 32 บิต ถึงมองเห็นหน่วยความจำได้ไม่เต็มความจุ
หน่วยความจำ ประกอบด้วยหน่วยเก็บข้อมูลย่อยๆ แต่ละหน่วยเก็บข้อมูลจะถูกอ้างถึงได้โดยแอดเดรส ซึ่งเป็นเลขฐาน 2 แอดเดรสนี้จะร้องขอโดยซีพียูไปยังหน่วยความจำหลัก เพื่ออ่านค่าหน่วยความจำที่แอดเดรสนั้น


ตัวอย่างเช่น หากซีพียูทำงานในระบบ 3 บิต ก็จะอ้างถึงหน่วยความจำได้ 23 = 8 ช่อง หรือ 8 bytes เมื่อติดตั้งหน่วยความจำเกินกว่าซีพียูจะอ้างถึง เช่น 64 byte ลงไป ซีพียูที่ทำงานในระบบ 3 บิต ก็จะมองเห็นได้เท่าที่ตัวเองจะอ้างอิงนั่นคือ 8 byte เท่านั้น อีก 56 byte จึงกลายเป็นพื้นที่ลึกลับและเปล่าประโยชน์ที่ซีพียูไม่สามารถอ้างถึงได้นั่น เอง

ในระบบ 32 บิต การอ้างอิงหน่วยความจำหลักจะทำได้ 232 หรือเท่ากับ 4,294,967,296 byte หรือประมาณ 4GB ไม่เกินจากนี้ แต่น่าเสียดายที่อุปกรณ์ต่างๆ ที่ติดตั้งอยู่ในระบบ ตั้งแต่ ตัวคอนโทรลเลอร์ USB การ์ดแสดงผลหรือการ์ดทีวีจูนเนอร์ต่างก็ต้องอ้างถึงพื้นที่หน่วยความจำใน ระบบด้วยเช่นกัน ทำให้ระบบปฏิบัติการต้องกันพื้นที่ของหน่วยความจำประมาณ 300 – 1024MB สำหรับอุปกรณ์นั้นๆ ไว้ ไม่ว่าจะถูกใช้หรือไม่ก็ตาม

ล้วงลึกหน่วยความจำระบบด้วย Physical Address Extension (PAE)
เมื่อไม่นานมานี้ มีผู้คิดค้นเทคโนโลยี Physical Address Extension (PAE) ที่ช่วยดึงหน่วยความจำหลักของระบบในส่วนที่ถูกกักเก็บไว้กลับมาใช้ได้อีกครั้ง ใครที่ใช้ซีพียูอินเทลตระกูลเพนเทียมหรือเก่ากว่าซึ่งอ้างถึงพื้นที่หน่วยความจำได้ 32 Line จะไม่สามารถใช้ประโยชน์จากเทคโนโลยี PAE ได้ แต่ถ้าคุณใช้ซีพียูตั้งแต่เพนเทียมโปรเรื่อยมาจนถึง Core 2 ที่อ้างถึงหน่วยความจำได้มากกว่า 36 line จะรองรับความจุของหน่วยความจำได้สูงสุดถึง 64GB เลยทีเดียว เทคโนโลยี PAE นี้จะสามารถเปิดใช้งานได้ตั้งแต่วินโดว์สเอ็กซ์พี SP2 ขึ้นไป ส่วนจะทำงานได้สมบูรณ์มากน้อยแค่ไหนก็ขึ้นอยู่กับฮาร์ดแวร์ในเครื่องเป็นสำคัญด้วย

เปิดประตู PAE : Windows XP
ในวินโดว์สเอ็กซ์พีคุณสามารถเปิดใช้งาน PAE ได้ด้วยการแก้ไขไฟล์ “Boot.ini” การเข้าไปยังไฟล์นี้ ทำได้โดย


1. กดคีย์ลัด [Windows] + [E] เพื่อเข้ามาที่หน้า My Computer ดับเบิลคลิกเข้าไปที่ไดร์ฟหลักที่ติดตั้งระบบปฏิบัติการไว้

2. คลิกที่เมนู Tools > Folder Options แล้วเอาเครื่องหมายถูกที่หัวข้อ Hide protected operating system files (Recommended) ออก ติ๊กถูกที่หัวข้อ Show hidden files and folders กด OK ก็จะเห็นไฟล์ Boot.ini โชว์ขึ้นมา

3. คลิกขวาเลือก Properties แล้วเอาเครื่องหมายหน้า Read-only ออก เท่านี้คุณก็แก้ไขไฟล์ Boot.ini ได้แล้ว


4. ให้คุณเพิ่มคำสั่ง /PAE ต่อท้ายบรรทัดที่ระบุตำแหน่งระบบปฏิบัติการ จากนั้นกด Save และรีสตาร์ทเครื่อง ถ้าฮาร์ดแวร์รองรับคำสั่ง PAE เมื่อเข้ามาที่ Control panel > System คุณก็จะเห็นรายละเอียดหน่วยความจำที่มากขึ้นพร้อมๆ กับคำว่า Physical address enhancement


เปิดประตู PAE : Windows Vista / 7 32bit

1. ให้คุณกดปุ่ม [Windows] แล้วพิมพ์ cmd ลงในช่อง Search Field

2. จากนั้นคลิกขวาที่ไฟล์ cmd.exe เลือก Run as administrator พิมพ์คำสั่ง “BCDedit/set PAE forceenble” กด Enter แล้วรีสตาร์ทเครื่อง ประสิทธิภาพของคอมพิวเตอร์จะสูงขึ้น ถ้าอุปกรณ์รองรับคำสั่งดังกล่าว


 

หมายเหตุ : หากระบบไม่สามารถทำงานได้ ให้เข้าไปที่ Safe mode และลบคำสั่ง /PAE ในไฟล์ Boot.ini (วินโดว์สเอ็กซ์พี) หรือพิมพ์ “BCDedit/set PAE forcedisable” (วินโดว์สวิสต้า/วินโดว์สเซเว่น)

หน่วยความจำที่ระบบมองเห็น เพิ่มขึ้นนั้น จะไม่ได้ถูกนำมาใช้กับระบบโดยตรง แต่จะถูกแปลงให้เป็น RAM-Disk เพื่อใช้ความเร็วของมันให้เป็นประโยชน์ต่อได้ CHIP ขอแนะนำ Gavotte ramdisk สุดยอดโปรแกรมสร้าง RAM-Disk ที่ทำงานได้ดี ใช้งานง่าย และมีให้ดาวน์โหลดจากเว็บไซต์ของเราด้วยเช่นกัน

แทนที่ฮาร์ดดิสก์อืดๆ ด้วย RAM-Disk




การติดตั้ง RAM-Disk ทำได้ง่ายและใช้เวลาไม่นานขั้นตอนแรก ต้องแก้ไขการตั้งค่าของ Registry เก่าก่อน โดยดับเบิลคลิกที่ไฟล์ “ram4g.reg” ในโฟลเดอร์ gavotte เพื่อเปิดระบบ จากนั้นคลิกขวาที่โปรแกรม ramdisk เลือก Run as administrator แล้วกดยืนยันการติดตั้งไดรเวอร์ รอสักครู่เพื่อให้ RAM-Disk เข้าสู่ระบบ ขั้นตอนสุดท้ายคือการเลือกขนาดพื้นที่ RAM-Disk ที่ต้องการแล้วกด OK

คุณสามารถจัดการกับ RAM-Disk และใช้ประโยชน์จากพื้นที่ 500 หรือ 600MB ที่เพิ่มขึ้นมาได้ทันที หลังจากสร้างไดร์ฟแล้ว ระบบจะสร้าง โฟลเดอร์เก็บ Temp File ด้วย ซึ่งจะถูกลบทุกๆ ครั้งที่ชัตดาวน์หรือรีสตาร์ทเครื่อง อย่างไรก็ตาม พื้นที่จะไม่ได้เพิ่มขึ้นอย่างมีนัยสำคัญ ถ้าคุณตระหนักดีว่า PAE และ Gavotte ทำงานได้อย่างถูกต้องในระบบ

คุณสามารถขยายขนาดของ RAM-Disk ได้ด้วยการใส่หน่วยความจำเพิ่มลงไป และปรับเปลี่ยนการตั้งค่าพื้นฐานของเครื่องมือ Gavotte เสียใหม่ RAM-Disk ก็จะขยายขนาดเป็น 4GB ได้เองอัตโนมัติ RAM-Disk ที่ได้สามารถนำไปใช้ประโยชน์ได้หลายแบบ โดยเฉพาะอย่างยิ่ง การเซ็ตให้พื้นที่ของ RAM-Disk ทำงานเป็น Swap File ซึ่งจะช่วยให้ระบบและแอพพลิเคชันทำงานได้เร็วขึ้น

คุณสามารถตั้งค่านี้ในวินโดว์สวิสต้าได้โดยไปที่ Control Panel > System Maintenance> System เลือกหัวข้อ advanced system settings > Performance > Settings ค่ากำหนดของ Swap File จะอยู่ในแท็บ Extended

สำหรับวินโดว์สเอ็กซ์พี การตั้งค่า Swap File ต้องเข้าไปตั้งค่าที่ Control Panel > System > Advanced > คลิก Setting ในหัวข้อ Performance > Advanced > คลิก Change ในหัวข้อ Virtual Memory จากนั้นให้ยกเลิกการตั้งค่า Swap File อันเดิมซึ่งจะเป็นไดร์ฟ C: ออกก่อน แล้วค่อยมาเปิดใช้งานที่ไดร์ฟ R: หรือไดร์ฟที่สร้างไว้



ที่มา : http://www.gggcomputer.com/index.php?topic=9651.0;wap2

วันอาทิตย์ที่ 11 กันยายน พ.ศ. 2554

เครื่องของคุณห่วย หรือเทพ ตัดสินโดย Windows 7

บางท่านอาจจะยังไม่เคยเข้าไปดูการวัด Rate ของ Windows 7
ตัววัด Rate นี้จะวัด Hardware เช่น Processor , Ram , HDD  และ Graphic เป็นสำคัญ ซึ่งจะจัด Rate ไว้ตั้งแต่
1.0 ถึง 7.9 แน่นอนว่า 1.0 คงจะเป็นเครื่องที่พอใช้ได้เท่านั้น  Rate ยิ่งสูงก็ยิ่งแสดงว่าเครื่องเจ๋งขนาดไหน
Rate นี้จะทำการวัดเมื่อท่านติดตั้ง Windows 7 และใช้งานไปสักระยะหนึ่ง ระบบก็จะเริ่มเก็บข้อมูลการทำงานและจัด Rate

การเข้าไปดู Rate นั้นก็ไม่ยาก

คลิ๊กเมาส์ปุ่มขวาที่ My Computer แล้วเลือก Properties
พบหน้าต่างรายละเอียดเกี่ยวกับระบบ ดูที่หัวข้อ Rating กดที่ Windows Experience Index
จะเปิดหน้าต่างรายละเอียดในการวัด Rating (Rate and improve your computer's performance)
ในภาพด้านบนเครื่องของผู้เขียนวัดได้คะแนนเฉลี่ย 5.4
จากรายละเอียดของการวัด Rating ของ Microsoft เครื่องที่มีค่าเฉลี่ย 2.0 ขึ้นไปถือว่าเพียงพอ เป็นเครื่องที่เหมาะกับการใช้งานทั่วไป เช่นพิมพ์งาน หรืออินเตอร์เน็ต หากมีค่าเฉลี่ย 3.0 ขึ้นไป ถือว่าเครื่องนั้นอยู่ในระดับค่อนข้างดี ใช้ทำงานเกี่ยวกับ Graphic หรือเล่นเกมได้