|
Posted
over 16 years
ago
by
DavidSrbecky
These projects have been accepted into SharpDevelop. You can learn more about each project by visiting the links below.
Student
Title
Mentor
Siegfried Pammer
XAML code completion for SharpDevelop
Bernhard
... [More]
Spuida
Philipp Maihart
Application "Database Tools Add-In"
Peter Forstmeier
Martin Konicek
Debugger visualizer for SharpDevelop
David Srbecky
Sergej Andrejev
Common keyboard shortcuts handling and management in SharpDevelop
Matt Ward
Tomasz Tretkowski
Integration of C /CLI
Daniel Grunwald
Our goals for GSoC 2009 are simple:
provide students with a learning experience in advanced .net application programming
motivate students to become long term contributors
improve SharpDevelop in code areas the core team does not have time to work on currently
We look forward to having a great experience with all involved.
And don't worry, even if you were not selected for one of the slots available, we value your efforts and thoughts. If you want to contribute to SharpDevelop nevertheless, you are welcome and also will receive our support. Of course, there won't be money involved, but if you enjoy coding as much as we do, we will be glad to help and mentor you - just drop us a line to let us know and we will be there for you. If you don't, we look forward to seeing you around again in the next GSoC.
Thanks for all your applications and great project proposals. It is wonderful for us to see what you are thinking and planning. [Less]
|
|
Posted
over 16 years
ago
by
siegi44
As mentioned in the previous post, SharpDevelop 3.1 will contain a built-in profiler.Today we'll talk about what data the profiler collects, and what exactly "merging" is.We’ll use the following sample program for exploring the topic:using
... [More]
System;using System.Threading;namespace ICSharpCode.Profiler.Example1{ class Program { static void DoCalculation(bool doLotsOfWork) { if (doLotsOfWork) { int target = Environment.TickCount 1000; while (Environment.TickCount < target) { } } else Thread.Sleep(100); } static void SomeMethod() { DoCalculation(true); } static void SomeOtherMethod() { for (int i = 0; i < 10; i ) { DoCalculation(false); } } static void Main() { SomeMethod(); SomeOtherMethod(); } }}SomeMethod and SomeOtherMethod take the same amount of time, but for different reasons.If we simply store timing information per method, it would seem that DoCalculation spends 50% of the time in get_TickCount and 50% in Thread.Sleep.But a good profiler should be able to show that only the invocations of SomeMethod spend their time in get_TickCount, whereas SomeOtherMethod ends up spending time in Thread.Sleep.Or, assume you have a program with a textbox and a button. You click on the button, then change the text (input to the program) and then run the button code again. The other input might mean that the performance characteristics of the button method change dramatically - so ideally, we should be able to view each click separately.What data does the profiler have to collect to do this? The easiest solution would be to record all function calls. For each function call, store the function ID, the call start time, and the call end time.That way, we don't lose any data; we can reconstruct the application's stack at every point in time.Of course, if you are looking into a performance issue, you don't want to look at individual stack traces - you want a little more overview. Or expressed for our textbox/button example: It is nice to be able to separately view the data for each button click; but initially, you'll want to look at all data at once.Now we get to our data model: when you're using the SharpDevelop profiler, you're dealing with "merged" sets of individual calls. Instead of seeing a single call stack, you'll see the tree of all call stacks.For our example code, this looks like in the following screenshot: Note that the ten calls to DoCalculation inside SomeOtherMethod were merged into a single node in the tree view (a "merged" call). In this view, you are not able to view an individual call's timing data, only the sum of all individual times. However, the DoCalculation call inside SomeMethod and that in SomeOtherMethod are still separate, as these have different call stacks.If you want to view them together, select both calls and use Right Click > Merge.A new tree will open with all 11 calls merged together: No matter whether we're dealing with multiple calls after each other, or with calls in different positions in the tree, it's always the same operation: merging. You can even merge calls of different functions together - though unless the functions do similar things, you won't get useful results.For example, here you can see SomeMethod and SomeOtherMethod merged together: Note that merging functions also merges their children (grouped by function name).Now it's pretty clear what the timeline control above does: the profiler takes all root nodes from all stack traces in the selected time span, and merges nodes belonging to the same thread.However, naïvely storing every function call individually takes a lot of space - about 7 GB (!) for SharpDevelop starting and opening its own solution (SharpDevelop.sln). That's why the profiler limits you to selecting start and end positions for the time spans with a granularity of about 500ms: during profiling, the profiler hook merges the calls into data sets of about 500ms.We never actually create the "function start,end"-entries proposed above, but directly build a merged representation as the profiler runs. That way we dramatically reduce the size of the profiler output: only 198 MB for SharpDevelop starting and opening its own solution.In the next post we will give you a brief overview of all the other commands you can access in the context menu of each call and how to use them. [Less]
|
|
Posted
over 16 years
ago
by
siegi44
Nearly one year ago, we started building a new tool for SharpDevelop: a profiler. It will make
it easier to analyze and improve the performance of applications developed
using SharpDevelop. In the next few weeks we are going to give you an overview
... [More]
of all the different aspects of the profiler, its usage and we will shed some
light on its implementation and technical details.
Using the Profiler
To start a new profiler session just go to “Quality Tools” > “Profiler” and then you
can decide whether to profile the currently opened project or you can select a
program to run.
During execution of the application, performance data is collected. On program end,
SharpDevelop will automatically open up the session and display the collected
data.
In the “Overview” tab, all threads and all calls are listed. In the “Top 20” tab 20 methods, in which most time is spent during run time, are listed. On the right side you can see
the ring diagram. The concept of the ring diagram was taken from the Ubuntu “Disk
Usage Analyzer”. It can be used to easily navigate to deep levels of the call
tree. Just click on a call to move there. If you want to go back to the call
you had selected before, just click inside the gray circle in the middle.
To show details on a call in the ring diagram simply move the mouse over it and a tool
tip with important information will be displayed. The gray circle represents
the call currently selected in the tree view. The innermost ring is a pie chart
showing the children of the selected call. The size of each piece is
proportional to the time spent inside that call. The other rings represent the
deeper levels of the call tree.
In the next post we will show you the “merge” feature, which allows you to view multiple
parts of the call tree at once. The “merge” feature is used by the “Top 20” tab
and the timeline too. [Less]
|
|
Posted
over 16 years
ago
by
Laputa
The time to send in proposals for Google Summer Of Code is over now. Now we're busy reading your proposals and trying to decide on a ranking. This is a lot more work than I initially expected - we got lots of proposals during the last three days.
... [More]
Unfortunately, most of the late proposals were of a rather low quality. In total, we got 44 proposals from 34 students - much more than I expected. Here's the list of topics proposals were written on. As you can see, most of them come straight from...(read more) [Less]
|
|
Posted
over 16 years
ago
by
Laputa
In SharpDevelop 3.1.0.3948, I changed our Subversion integration to use SharpSVN instead of SvnDotNet . SharpSVN exposes more Subversion APIs to managed code, which could result in some nice features in the (far) future - for example, "SVN Diff"
... [More]
right inside the text editor. But the main reason for the upgrade was that SharpSVN supports Subversion 1.6. If you are using TortoiseSVN 1.6, you need to update to SharpDevelop 3.1 . The old SvnDotNet does not work with new working copies. However...(read more) [Less]
|
|
Posted
almost 17 years
ago
by
Laputa
David wrote a blog post on our participation in the GSoC 2009 . It refers to the GSoC 2009 Wiki entry where the mentors have posted a few ideas (yes, we actively encourage students to come up with their own!). As I am the program manager, I am not
... [More]
active as a mentor, but I sure do have an opinion... here are my top five projects when it comes to "visibility" (a feature that will be used by a large percentage of our user base): The database scout / database api / EDM designer (we already...(read more) [Less]
|
|
Posted
almost 17 years
ago
by
DavidSrbecky
SharpDevelop is participating in the Google Summer of Code this year. It is an opportunity for students to earn 4500 USD over the summer by working on an open-source project.We have created a list of ideas, but you can work basically on anything you
... [More]
want as long as it is relevant to SharpDevelop. You can find the list of ideas and any further information on the SharpDevelop wiki page for the Google Summer of Code. You can submit your application here. If you are not a student or if you do not have enough spare time, you can benefit as well.... share your ideas with us and maybe some student will pick them up and implement them.Feel free to contact us on the forums or via email. Please spread the word and tell your friends about the Summer of Code... [Less]
|
|
Posted
almost 17 years
ago
by
MattWard
Here is a short walkthrough on how to use the
Python Standard
Library with
SharpDevelop 3.0 and IronPython 2.0.PrerequisitesYou will need to have SharpDevelop 3.0 and Python 2.5 installed
on your machine. These can be
... [More]
downloaded from the following
locations.SharpDevelop
3.0Python
2.5Note that using Python 2.6 is not supported. The following
section assumes that Python 2.5 was installed into the C:\Python25
folder.Using the Python Standard LibraryFirst we will create an IronPython console application in
SharpDevelop. From the File menu select New and then
Solution. In the New Project window select the Python
category and select the Console Application template.Give the project a name, select its location and click the
Create button.To use the Python Standard Library the project needs a reference
to IronPython.dll, which should be added by default, and a
reference to IronPython.Modules.dll. Open the Projects
window, if it is not already open, by selecting Projects
from the View menu. Right click the project's
references and select Add Reference. In the Add
Reference dialog first add a reference to mscorlib, this
reference is only needed since we are going to use the
System.Console class to pause the console output. Then select the
.NET Assembly Browser tab and click the Browse
button. Locate the IronPython.Modules.dll file and select it. This
file should be in the following folder:C:\Program
Files\SharpDevelop\3.0\AddIns\AddIns\BackendBindings\PythonBindingClick OK to close the Add Reference dialog.In the Program.py file change the code to the following:# Add Python Standard Library to search path. import sys sys.path.append("c:\python25\lib") # Use Python Standard Library os module. import os print os.getcwd() # Wait for a key press before closing the console window. import System print "Press any key to continue..." System.Console.ReadKey(True) The sys.path.append line adds the Python Standard Library to the
search path. After that the os module is imported and the os.getcwd
method is called to get the current working directory and this is
output to the console window. The last three lines of code are just
used to pause the console window so we can see the output.Compile the above code by selecting Build Solution from
the Build menu.Finally run the application by selecting Run from the
Debug menu. [Less]
|
|
Posted
almost 17 years
ago
by
Laputa
Another major release of SharpDevelop finally hits the streets - version 3.0 has been completed yesterday and is available for download as of now! Go get it...(read more)
|
|
Posted
about 17 years
ago
by
Laputa
On December 5th (revision 3655), we removed the WPF designer from SharpDevelop 3.0. The decision to remove this feature had its origins in an internal discussion between Daniel, Ivan and myself after watching the PDC 2008 session Microsoft .NET
... [More]
Framework: Declarative Programming Using XAML . There, System.Xaml.dll was announced - a parser for the full Xaml standard. Back then, a preview was announced for November, but that has been pushed back - please see the System.XAML CTP blog post by Rob Relyea...(read more) [Less]
|