declare @now as DateTime;
declare @a as geometry, @b as geometry, @c as geometry, @d as geometry;
declare @i as int;
set @a=geometry::STGeomFromText('POLYGON ((-117.728401504457 33.4074362777174, -117.728401504457 33.483708716929, -117.728741005063 33.483719997108, -117.729011997581 33.4837289974093, -117.729280993342 33.4837450012565, -117.729503005743 33.4837549999356, -117.729840993881 33.4838410019875, -117.730170994997 33.484004996717, -117.730409994721 33.4840710014105, -117.730654001236 33.4840999990702, -117.731106996536 33.4842299968004, -117.731616005301 33.4843790009618, -117.731675997376 33.4844399988651, -117.731721997261 33.4845660030842, -117.731923997402 33.4846879988909, -117.732126995921 33.4847859963775, -117.732163995504 33.4847979992628, -117.732271000743 33.4848320037127, -117.732706993818 33.4849689975381, -117.73326100409 33.4850199967623, -117.733397006989 33.4850059971213, -117.733499005437 33.4849639981985, -117.733560994267 33.4848840013146, -117.73358400166 33.4847370013595, -117.733613997698 33.4846950024366, -117.733650997281 33.4846429973841, -117.733763992786 33.4846339970827, -117.733796998858 33.4846389964223, -117.733940005302 33.4846619963646, -117.734024003148 33.4846379980445, -117.734120994806 33.4845350012183, -117.734171003103 33.4844639971852, -117.734221994877 33.4844399988651, -117.734347000718 33.4844729974866, -117.734402999282 33.4845250025392, -117.734414994717 33.4845909997821, -117.734381005168 33.4847190007567, -117.734347000718 33.48499699682, -117.734357997775 33.4851950034499, -117.734385997057 33.4853689968586, -117.734437003732 33.485449001193, -117.734442993999 33.485514998436, -117.734385997057 33.4855670034885, -117.734126001596 33.4856989979744, -117.733985006809 33.4858079999685, -117.733866006136 33.4859440028667, -117.733776003122 33.4861709997058, -117.733747005463 33.4863879978657, -117.733686000109 33.4865010008216, -117.73357899487 33.4866660013795, -117.733549997211 33.4867409989238, -117.733573004603 33.4868540018797, -117.733634993434 33.4870000034571, -117.733895003796 33.4874010011554, -117.73436999321 33.487999998033, -117.734623998404 33.4882310032845, -117.734861001372 33.4883939996362, -117.735148996115 33.4885940030217, -117.735771998763 33.4889089986682, -117.735934004188 33.4889699965715, -117.736111998558 33.4889959990978, -117.736368000507 33.4889869987965, -117.736644998193 33.4888830035925, -117.736771002412 33.4887949973345, -117.736844003201 33.4886910021305, -117.736984997988 33.4883240014315, -117.737027004361 33.4881620034575, -117.737038001418 33.4881189987063, -117.73707999289 33.4880620017648, -117.737111002207 33.4880620017648, -117.737131997943 33.4881670027971, -117.737231001258 33.4882630035281, -117.73738899827 33.488332003355, -117.737491995096 33.4884150028229, -117.737525001168 33.4884409978986, -117.737681999803 33.488480001688, -117.737749993801 33.4885059967637, -117.73787599802 33.4886680021882, -117.737885996699 33.4887159988284, -117.73787599802 33.4887640029192, -117.737775996327 33.4887899979949, -117.737775996327 33.4888430014253, -117.737834006548 33.4888859987259, -117.737807005644 33.4889120012522, -117.737734004855 33.488943003118, -117.737724006176 33.4889869987965, -117.73769800365 33.489009000361, -117.737608999014 33.4889909997582, -117.737588003278 33.4890170022845, -117.737618997693 33.4891130030155, -117.737602993846 33.4891659989953, -117.737498998642 33.4891259968281, -117.73745200038 33.4891439974308, -117.737398996949 33.4891960024834, -117.737188994884 33.4892230033875, -117.737158000469 33.4892269968987, -117.737007007003 33.4892570003867, -117.736965000629 33.4893010035157, -117.736948996782 33.4893800020218, -117.736974999309 33.4895370006561, -117.737038001418 33.4896859973669, -117.73707999289 33.4897420033813, -117.737131997943 33.489767998457, -117.737268000841 33.4898030012846, -117.73739400506 33.4898289963603, -117.737534999847 33.4898289963603, -117.737807005644 33.4896769970655, -117.737975001335 33.4895460009575, -117.73807400465 33.4895059987903, -117.738195002079 33.4895109981298, -117.738284006715 33.4895460009575, -117.738290995359 33.4895669966936, -117.738300994039 33.4895979985595, -117.738319993019 33.4896589964628, -117.73830999434 33.4896970018744, -117.738299995661 33.4897380024195, -117.738299995661 33.4898080006242, -117.738319993019 33.4898689985275, -117.738319993019 33.4899389967322, -117.738231003284 33.4901129975915, -117.738199993968 33.4901610016823, -117.738205000758 33.4902139976621, -117.738089993596 33.4904929995537, -117.738079994917 33.4905320033431, -117.738126993179 33.4905890002847, -117.738478004932 33.4906459972262, -117.7385610044 33.4906369969249, -117.738680005074 33.4905909970403, -117.738794997334 33.4905870035291, -117.738875001669 33.490615002811, -117.738885998726 33.4906679987907, -117.738881006837 33.4907160028815, -117.738839000463 33.4908339977264, -117.738916993141 33.4909470006824, -117.738888993859 33.4909709990025, -117.738805994391 33.4909709990025, -117.738764002919 33.4910190030932, -117.738768994808 33.4910449981689, -117.738800004125 33.4911110028625, -117.738727003336 33.4911630004644, -117.738710999489 33.4911940023303, -117.738717004657 33.4912509992719, -117.738721996546 33.4912990033627, -117.738753005862 33.4913289994001, -117.738794997334 33.4913209974766, -117.738820999861 33.4912810027599, -117.738820999861 33.4912159964442, -117.738857999444 33.4911850020289, -117.738894999027 33.4911980032921, -117.738921001554 33.4912239983678, -117.738951995969 33.4913770034909, -117.738967999816 33.4915610030293, -117.738931000233 33.4916350021958, -117.738848000765 33.4916869997978, -117.738800004125 33.4917220026255, -117.738658994436 33.4917659983039, -117.738527998328 33.4919139966369, -117.738370999694 33.4918790012598, -117.73832899332 33.4919229969382, -117.738303005695 33.4919620007277, -117.738313004375 33.4920630007982, -117.738334000111 33.4921239987016, -117.738365992904 33.4921720027924, -117.738475993276 33.4922460019588, -117.738585993648 33.4923069998622, -117.738658994436 33.4923200011253, -117.738784998655 33.4922159984708, -117.738852992654 33.4921979978681, -117.73894700408 33.4922069981694, -117.739114999771 33.4923420026898, -117.739240005612 33.4924689978361, -117.739256992936 33.4925170019269, -117.739278003573 33.4925910010934, -117.739262998104 33.4926349967718, -117.739215999842 33.4926439970732, -117.739146992564 33.4927349984646, -117.73904299736 33.492918998003, -117.73904299736 33.4929749965668, -117.739085003734 33.493014998734, -117.739231005311 33.4930189996958, -117.739372998476 33.4930759966373, -117.739393994212 33.4931240007281, -117.739366993308 33.4931539967656, -117.739305004478 33.4931679964066, -117.739209994674 33.4932679980993, -117.739115998149 33.4934910014272, -117.739078998566 33.4936610013247, -117.739063993096 33.4939099997282, -117.739068999887 33.4940150007606, -117.739087998867 33.4941150024533, -117.739187002182 33.4943249970675, -117.739397004247 33.4946649968624, -117.739867006755 33.495417136699, -117.824559478079 33.495417136699, -117.824307993054 33.4952220022678, -117.823504000902 33.4945980012417, -117.816596999764 33.4909979999065, -117.816356003284 33.4908730015159, -117.814840003848 33.4872070029378, -117.811278000474 33.4820199981332, -117.804418995976 33.4766160026193, -117.800633996725 33.4742129966617, -117.798559993505 33.472896002233, -117.798070997 33.4726089984179, -117.79326300323 33.4697820022702, -117.792353004217 33.4653469994664, -117.790478006005 33.4612419977784, -117.786994993687 33.4570280015469, -117.786757007241 33.4567539989948, -117.781470000744 33.4506559967995, -117.776062995195 33.4452909976244, -117.772342994809 33.4402370005846, -117.770768001676 33.4383350014687, -117.765139997005 33.4315399974585, -117.757411003113 33.4242829978466, -117.750887006521 33.4189750030637, -117.741410002112 33.4101179987192, -117.735336005688 33.4074369966984, -117.728401504457 33.4074362777174))',4269);
set @now=GETDATE();
set @i=0;
while @i<10
begin
set @b=@a.STBuffer(0.0005);
set @i=@i+1;
end
select CAST(DATEDIFF(MS, @now,GETDATE()) as CHAR(10));
set @now=GETDATE();
set @i=0;
while @i<10
begin
set @c=@a.STEnvelope();
set @d=@b.STCentroid().STBuffer(@c.STPointN(1).STDistance(@c.STPointN(3))+0.0005)
set @i=@i+1;
end
select CAST(DATEDIFF(MS, @now,GETDATE()) as CHAR(10));
set @now=GETDATE();
set @i=0;
while @i<10
begin
set @c=@a.STEnvelope();
set @d=@b.STCentroid().STBuffer(@c.STPointN(1).STDistance(@c.STPointN(3))+0.0005)
set @i=@i+1;
end
select CAST(DATEDIFF(MS, @now,GETDATE()) as CHAR(10));
result:
first method: 350 ms
second method:6 ms