|
thanks, i've seen this article, the problem is that i can't use external dlls (stupid requirement that i'm trying to remove...)
I'm brazilian and english (well, human languages in general) aren't my best skill, so, sorry by my english. (if you want we can speak in C# or VB.Net =p)
|
|
|
|
|
How about this[^] fully managed solution?
/ravi
|
|
|
|
|
5 doesn't seems enough to thank you for that, this solution is perfecty
I'm brazilian and english (well, human languages in general) aren't my best skill, so, sorry by my english. (if you want we can speak in C# or VB.Net =p)
|
|
|
|
|
Glad to be of help!
/ravi
|
|
|
|
|
I need to be able to use my c# written code to access my webcam(in-built). The one i got from this site isn't what I wanted. This application should be with winforms not wpf
|
|
|
|
|
What prevents you from embedding the WPF window containing the MediaElement in your WinForms app?
/ravi
|
|
|
|
|
Please can I just get the application or sdk.......... I neeed it urgently
|
|
|
|
|
Hello!
I'm trying to create a Regex so it would work same to String.Contains. In general I just create Regex from the string, but there are a lot of problems here: the string may contain +, * and other characters so Regex throws exception as it does not likes this.
I assume that Rexeg.IsMatch works faster than String.Contains so I'd like to use it.
Do you know how to work this around? I could replace all the escape characters in my string to \+. Maybe there is something better?
Thanks.
modified 11-May-12 5:35am.
|
|
|
|
|
You can use the Regex.IsMatch() method[^].
|
|
|
|
|
The question is how to build Regex
|
|
|
|
|
If you are testing against something that is considered a special character, then you have no choice but to escape the character. This is no different than having to escape something like \n in C#.
|
|
|
|
|
Pete O'Hanlon wrote: you have no choice but to escape the character
There's no escape, but to escape!
"With sufficient thrust, pigs fly just fine."
Ross Callon, The Twelve Networking Truths, RFC1925
|
|
|
|
|
amrok2amrokk wrote: I assume that Rexeg.IsMatch works faster than String.Contains
I doubt it. And were it true don't you think they would implement it with Regex?
|
|
|
|
|
amrok2amrokk wrote: I assume that Rexeg.IsMatch works faster than String.Contains so I'd like to use it.
Never assume! Test it!
I would, once, have assumed the same. But when I wanted to count the number of lines in a string, I had to run some comparative tests. I didn't check String.Contains against a Regex, but I was surprised by the speed difference between the various methods. You may well find that String.Compare is faster than a Regex if only because the Regex has to be parsed!
If you are interested, the results of the testing are here: Counting lines in a string[^]
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
So I created a simple test and here are the results:
Regex 00:00:00.2968750
String 00:00:00.3281250
It's for release configuration.
namespace RegexTest
{
public partial class Window1 : Window
{
List<string> _data;
public Window1()
{
InitializeComponent();
_data = new List<string>(500000);
Random rand = new Random();
byte[] data = new byte[4000];
for (int i = 0; i < 50000; i++)
{
rand.NextBytes(data);
_data.Add(Convert.ToBase64String(data));
}
}
private void buttonTestRegex_Click(object sender, RoutedEventArgs e)
{
DateTime start = DateTime.Now;
Regex regex = new Regex("99");
int count = _data.Count;
int match = 0;
for (int i = 0; i < count; i++)
{
if (regex.IsMatch(_data[i]))
{
match++;
}
}
DateTime end = DateTime.Now;
this.textBoxRegex.Text = (end - start).ToString();
}
private void buttonTestString_Click(object sender, RoutedEventArgs e)
{
DateTime start = DateTime.Now;
int count = _data.Count;
int match = 0;
for (int i = 0; i < count; i++)
{
if (_data[i].Contains("99"))
{
match++;
}
}
DateTime end = DateTime.Now;
this.textBoxString.Text = (end - start).ToString();
}
}
}
|
|
|
|
|
First off, when you are timing, don't use DateTime.Now - use the Stopwatch class instead. DateTime is only accurate to +- 10ms according to MS, which is frankly pants. Stopwatch is accurate to the system hardware time tick
Secondly, Did you get the same number of matches?
Thirdly, given the difference is ~10%, that could well be within the limits of experimental error and they are both executing the same code! Try running it 6 or so times and see if you get the same results -= I bet you don't!
I just tried it myself (with Stopwatch), and I get a much more pronounced difference:
Contains : 507282
Regex : 882800
Contains : 535572
Regex : 876324
Contains : 491582
Regex : 876369
Contains : 464881
Regex : 884031
Contains : 529527
Regex : 877334
Contains : 545686
Regex : 878110
That's on a Dual Core, under Win7 64 bit, running .NET 4, for x86.
Switching to x64:
Contains : 560253
Regex : 933286
Contains : 587743
Regex : 869393
Contains : 550809
Regex : 862328
Contains : 581642
Regex : 871326
Contains : 578634
Regex : 878303
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
Hi! I've changed the code and got these results
00:00:00.2780085
00:00:00.2824236
00:00:00.2805873
for Regex
00:00:00.3233195
00:00:00.3238453
00:00:00.3248080
for Contains
namespace RegexTest
{
public partial class Window1 : Window
{
List<string> _data;
public Window1()
{
InitializeComponent();
_data = new List<string>(50000);
Random rand = new Random();
byte[] data = new byte[4000];
for (int i = 0; i < 50000; i++)
{
rand.NextBytes(data);
_data.Add(Convert.ToBase64String(data));
}
}
private void buttonTestRegex_Click(object sender, RoutedEventArgs e)
{
Stopwatch sw = new Stopwatch();
sw.Start();
{
Regex regex = new Regex("99");
int count = _data.Count;
int match = 0;
for (int i = 0; i < count; i++)
match += regex.IsMatch(_data[i]) ? 1 : 0;
}
sw.Stop();
this.textBoxRegex.Text = sw.Elapsed.ToString();
}
private void buttonTestString_Click(object sender, RoutedEventArgs e)
{
Stopwatch sw = new Stopwatch();
sw.Start();
{
Regex regex = new Regex("99");
int count = _data.Count;
int match = 0;
for (int i = 0; i < count; i++)
match += _data[i].Contains("99") ? 1 : 0;
}
sw.Stop();
this.textBoxString.Text = sw.Elapsed.ToString();
}
}
}
I use x86 processor, .NET 3.5.
|
|
|
|
|
I just noticed that you're not doing anything with match , in a release build the whole for loop may be optimized out so you may not actually be doing any work.
How about this.textBoxString.Text = String.Format ( "{0} matches found in {1}" , match , sw.Elapsed ) ;
|
|
|
|
|
You are right, I've changed this to
this.textBoxRegex.Text = sw.Elapsed.ToString() + " " + match.ToString();
but the results didn't change much:
00:00:00.2823207 36117 for Regex
00:00:00.3306054 36117 for Contains.
|
|
|
|
|
I agree with Griff, and I raise you this...
While what you have may be suitable for your current needs, it may not generalize well. If a library function were doing Contains that way it would likely have the same signature as the existing Contains -- bool Contains ( string , string ) -- and it would have to create the Regex on each call. Your code as shown, knowing that it can use the same Regex instance, avoids this overhead. A more honest implementation may be even less efficient than the numbers Griff found.
|
|
|
|
|
OriginalGriff wrote: han a Regex if only because the Regex has to be parsed!
No. Compilation can be a one time cost and as such is not a factor in general for regex. However after that the regex must still be interpreted. And that cost does not go away.
|
|
|
|
|
Why would you even do this? Regexes are not fast, they are fairly slow, that's the price you pay for them being so flexible ... and when you want something simple that is already provided by a framework method, just use that.
|
|
|
|
|
Hi Experts,
Can anyone explain to me what is the graphicsDeviceservice in XNA? For what I know it serve the same function as CSS.
Can someone explain to me pls?
Thank you
|
|
|
|
|
Take a look here[^].
Programming is work, it isn't finger painting. Luc Pattyn
|
|
|
|
|
hi all , i want to sent latitude & longitude on click on map
to c# windows form textbox_latitude & textbox_longitude
this code send latitude & longitude on click on map but it send it to html input type="text" name="lat" ,input type="text" name="lng"
i want to transfer var lat , var lng to c# windows form textbox_latitude & textbox_longitude
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Dragable and clickable marker with lat and lang in form</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var map;
function initialize() {
var myLatlng = new google.maps.LatLng(30.050077, 31.238594);
var myOptions = {
zoom: 7,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var infowindow = new google.maps.InfoWindow({
content: "Drag marker to position or click to place"
});
infowindow.open(map);
google.maps.event.addListener(map, 'click', function(event) {
var clickedLocation = new google.maps.LatLng(event.latLng);
var marker = new google.maps.Marker({
position: event.latLng,
title:"Marker position",
draggable: true,
map: map
});
infowindow.open(map,marker);
map.setCenter(event.latLng);
google.maps.event.addListener(map, 'click', function(event) {
marker.setMap(null);
});
google.maps.event.addListener(marker, 'dragend', function(event) {
var point = event.latLng;
var lat = point.lat();
var lng = point.lng();
document.getElementById("frmLat").value = lat;
document.getElementById("frmLon").value = lng;
});
var point = event.latLng;
var lat = point.lat();
var lng = point.lng();
document.getElementById("frmLat").value = lat;
document.getElementById("frmLon").value = lng;
});
}
</script>
</head>
<body onLoad="initialize()">
Lat: <input type="text" name="lat" id="frmLat" >
Lng: <input type="text" name="lng" id="frmLon" >
iW3B.info
</body>
</html>
thanks in advance
|
|
|
|