Senin, 26 Mei 2008

Static VS Non Static

Berikut ini contoh applikasi Web Base untuk mengetahui perbedaan fungsi statis dan non statis..
Here we go.....


<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections.Generic" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
public static class StaticClass
{
public static long TestStaticFunction()
{
long t1 = 0;
long t2 = 0;


t1 = DateTime.Now.Ticks;

// Execute Logic
MethodTest1();
//MethodTest2();

t2 = DateTime.Now.Ticks;

return (t2 - t1);
}

private static void MethodTest1()
{
for (int i = 1; i < 10000; i++)
{
for (int j = 0; j < 10000; j++)
{
}
}
}
private static void MethodTest2()
{
decimal y = 2;
decimal x = 3;
decimal d = 0;

for (decimal z = 0; z < 1000000; z++)
{
if (z % 2 == 0) { d = y * d; } else { d = x * d; };
}
}
}
public class NonStaticClass
{
public long TestNonStaticFunction()
{
long t1 = 0;
long t2 = 0;

// Execute Logic
t1 = DateTime.Now.Ticks;
MethodTest1();
//MethodTest2();

t2 = DateTime.Now.Ticks;

return (t2 - t1);
}

private void MethodTest1()
{
for (int i = 1; i < 10000; i++)
{
for (int j = 0; j < 10000; j++)
{
}
}
}
private void MethodTest2()
{
decimal y = 2;
decimal x = 3;
decimal d = 0;

for (decimal z = 0; z < 1000000; z++)
{
if (z % 2 == 0) { d = y * d; } else { d = x * d; };
}
}
}

public class MyTest
{
private int _no;
public int No
{
get { return _no; }
set { _no = value; }
}

private long _staticTest;
public long StaticTest
{
get { return _staticTest; }
set { _staticTest = value; }
}

private long _nonstaticTest;
public long NonStaticTest
{
get { return _nonstaticTest; }
set { _nonstaticTest = value; }
}
public MyTest(int no, long statictest, long nonstatictest)
{
_no = no;
_staticTest = statictest;
_nonstaticTest = nonstatictest;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.dd_test.Items.Add(new ListItem("Static Only", "s"));
this.dd_test.Items.Add(new ListItem("Non Static Only", "ns"));
this.dd_test.Items.Add(new ListItem("Static and Non Static", "sns"));
this.dd_test.Items.Add(new ListItem("Non Static and Static", "nss"));
this.dd_test.SelectedIndex = 0;

this.dd_count.Items.Add(new ListItem("1", "1"));
this.dd_count.Items.Add(new ListItem("5", "5"));
this.dd_count.Items.Add(new ListItem("10", "10"));
this.dd_count.Items.Add(new ListItem("50", "50"));
this.dd_count.Items.Add(new ListItem("100", "100"));
this.dd_count.SelectedIndex = 0;
}
}
protected void btn_test_Click(object sender, EventArgs e)
{
long StaticValue = 0;
long NonStaticValue = 0;
int count = 0;
int.TryParse(this.dd_count.SelectedValue, out count);

// Clearing Grid
this.dg_test.Columns.Clear();
this.dg_test.DataSource = null;
this.dg_test.DataBind();

NonStaticClass ns = null;
List<MyTest> mytest = new List<MyTest>();

BoundField col1 = new BoundField();
col1.HeaderText = "No";
col1.DataField = "No";

BoundField col2 = new BoundField();
col2.HeaderText = "Static";
col2.DataField = "StaticTest";

BoundField col3 = new BoundField();
col3.HeaderText = "Non Static";
col3.DataField = "NonStaticTest";

string testtype = this.dd_test.SelectedValue;
switch (testtype)
{
case "s":
this.dg_test.Columns.Add(col1);
this.dg_test.Columns.Add(col2);

for (int i = 1; i <= count; i++)
{
StaticValue = StaticClass.TestStaticFunction();
mytest.Add(new MyTest(i, StaticValue, 0));
}

break;
case "ns":

this.dg_test.Columns.Add(col1);
this.dg_test.Columns.Add(col3);
for (int i = 1; i <= count; i++)
{
ns = new NonStaticClass();
NonStaticValue = ns.TestNonStaticFunction();
mytest.Add(new MyTest(i, 0, NonStaticValue));
}
break;
case "sns":
this.dg_test.Columns.Add(col1);
this.dg_test.Columns.Add(col2);
this.dg_test.Columns.Add(col3);

for (int i = 1; i <= count; i++)
{
StaticValue = StaticClass.TestStaticFunction();
ns = new NonStaticClass();
NonStaticValue = ns.TestNonStaticFunction();
mytest.Add(new MyTest(i, StaticValue, NonStaticValue));
}

break;
case "nss":
this.dg_test.Columns.Add(col1);
this.dg_test.Columns.Add(col3);
this.dg_test.Columns.Add(col2);

for (int i = 1; i <= count; i++)
{
ns = new NonStaticClass();
NonStaticValue = ns.TestNonStaticFunction();
StaticValue = StaticClass.TestStaticFunction();
mytest.Add(new MyTest(i, StaticValue, NonStaticValue));
}

break;
default:
break;
}

this.dg_test.DataSource = mytest;
this.dg_test.DataBind();
}


</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Static VS Non-Static</title>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td>Test</td>
<td>:</td>
<td><asp:DropDownList runat="server" ID="dd_test" /></td>
</tr>
<tr>
<td>Testing Count</td>
<td>:</td>
<td><asp:DropDownList runat="server" ID="dd_count" /></td>
</tr>
<tr>
<td colspan="3" align="right"><asp:Button runat="server" ID="btn_test" Text="Test" OnClick="btn_test_Click" /></td>
</tr>
</table>
<br />
Result :
<asp:GridView runat="server" ID="dg_test" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" AutoGenerateColumns="False">
<FooterStyle BackColor="White" ForeColor="#000066" />
<RowStyle ForeColor="#000066" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
</asp:GridView>
</form>
</body>
</html>

First Post

Helluw...
ini postingan pertama gue... semoga blog ini bermanfaat...